CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

真是不知道那有错误

楼主mfgok(想了又想学吧)2005-04-01 20:37:29 在 .NET技术 / ASP.NET 提问

真是不知道那有错误,却提示System.Data.OleDb.OleDbException:   FROM   子句语法错误。  
  <%@   Page   Language="C#"   Debug="true"   %>  
  <%@Import   NameSpace="System.Data"%>  
  <%@Import   NameSpace="System.Data.OleDb"%>  
  <script   language="c#"   runat="server">  
  void   Page_Load(Object   sender,EventArgs   e)  
  {  
    OleDbConnection   conn=new   OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=d:\\web\\db1.mdb");  
    OleDbCommand   com1=new     OleDbCommand("SELECT   *   FROM   counter",conn);  
    conn.Open();  
    OleDbDataReader   dr=com1.ExecuteReader();  
    dr.Read();  
    int   i=-1;  
    i=(int)dr["cou"];  
    dr.Close();  
    if(Session["flag"]==null)  
    {  
      i++;  
    Session["flag"]="true";  
    }  
    message.Text="您是第"+i+"访客";  
     
  OleDbCommand   com2=new     OleDbCommand("UPDATE   counter   SET   cou=i",conn);  
  com2.ExecuteNonQuery();  
  conn.Close();  
  }  
  </script>  
  <htlm>  
  <body>  
  <asp:Label   id="message"   runat="server"/>  
  </body>  
  </htlm>  
  问题点数:20、回复次数:25Top

1 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-04-01 20:40:57 得分 5

SELECT   *   FROM   [counter]  
  再试试看Top

2 楼hackate(兰花开香入梦境,独思佳人亦飘然!!)回复于 2005-04-01 20:45:14 得分 5

dr.Read();  
    int   i=-1;  
    i=(int)dr["cou"];  
    dr.Close();  
    if(Session["flag"]==null)  
    {  
      i++;  
    Session["flag"]="true";  
    }  
   
  请使用while(rs.read();)  
   
  循环,因为你是循环取值。Top

3 楼mfgok(想了又想学吧)回复于 2005-04-01 20:56:29 得分 0

这是个计数器只有一个值Top

4 楼mfgok(想了又想学吧)回复于 2005-04-01 21:00:20 得分 0

我改了SELECT   *   FROM   [counter]  
  又提示Line   13:     i=(int)dr["cou"];句柄无效,原来这个没错的Top

5 楼valu(V6bbs Ver1.4发布(仿西祠xici):www.v6bbs.com)回复于 2005-04-01 21:05:12 得分 0

i=Convert.ToInt32(dr["cou"]);Top

6 楼mfgok(想了又想学吧)回复于 2005-04-01 21:10:38 得分 0

i=Convert.ToInt32(dr["cou"]);  
  还是Exception   Details:   System.Data.OleDb.OleDbException:   行句柄无效。  
  表中cou字段是设成长整形Top

7 楼tophifi(黑字先生)回复于 2005-04-01 21:22:02 得分 5

只有一个值的话不需要用OleDbDataReader  
   
        OleDbConnection   conn=new   OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=d:\\web\\db1.mdb");  
        OleDbCommand   com1=new     OleDbCommand("SELECT   *   FROM   counter",conn);  
        conn.Open();  
   
        string   i;  
   
        i   =   objCmd.ExecuteScalar().ToString();  
   
  if(Session["flag"]==null)  
    {  
      i++;  
    Session["flag"]="true";  
    }  
    message.Text="您是第"+i+"访客";  
     
  com1.CommaneText   =   "UPDATE   counter   SET   cou="+   i;  
  com1.ExecuteNonQuery();  
   
   
  com1.Dispose();  
  conn.Close();  
  Top

8 楼tophifi(黑字先生)回复于 2005-04-01 21:27:59 得分 0

改急了,错了点  
   
  应该是  
  i   =   com1.ExecuteScalar().ToString();  
  Top

9 楼mfgok(想了又想学吧)回复于 2005-04-01 21:44:54 得分 0

这样i++能行吗Top

10 楼zhangaipl(烟酒僧)回复于 2005-04-01 21:57:17 得分 0

message.Text="您是第"+i+"访客";  
     
  OleDbCommand   com2=new     OleDbCommand("UPDATE   counter   SET   cou="   &   i,conn);  
  com2.ExecuteNonQuery();  
  conn.Close();  
  }  
  Top

11 楼mfgok(想了又想学吧)回复于 2005-04-01 22:04:10 得分 0

i=(int)dr["cou"];句柄无效  
  这行怎么改Top

12 楼mfgok(想了又想学吧)回复于 2005-04-02 19:44:51 得分 0

我又这样改了  
  <%@   Page   Language="C#"   Debug="true"   %>  
  <%@Import   NameSpace="System.Data"%>  
  <%@Import   NameSpace="System.Data.OleDb"%>  
  <script   language="c#"   runat="server">  
  void   Page_Load(Object   sender,EventArgs   e)  
  {  
    OleDbConnection   conn=new   OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=d:\\web\\db1.mdb");  
    OleDbCommand   com1=new     OleDbCommand("SELECT   *   FROM   [counter]",conn);  
    conn.Open();  
    OleDbDataReader   dr=com1.ExecuteReader();  
    dr.Read();  
    string   str;  
    str=dr["cou"].ToString();  
    int   i=int.Parse(str);  
    dr.Close();  
    if(Session["flag"]==null)  
    {  
     
      i++;  
    Session["flag"]="true";  
    }  
    message.Text="您是第"+i+"访客";  
     
  OleDbCommand   com2=new     OleDbCommand("UPDATE   counter   SET   cou"+i,conn);  
  com2.ExecuteNonQuery();  
  conn.Close();  
  }  
  </script>  
  <htlm>  
  <body>  
  <asp:Label   id="message"   runat="server"/>  
  </body>  
  </htlm>  
  依然提示str=dr["cou"].ToString();句柄无效  
  肯定是在那隐藏着重大错误,请高手看看  
  Top

13 楼nilnshen(光光)回复于 2005-04-02 19:52:17 得分 5

ExecuteReader   returns   multiple   result   collections,   so   dr["cou"].ToString()   will   not   be   sure   which   specified   value   you   wanted   to   get.  
  Top

14 楼mfgok(想了又想学吧)回复于 2005-04-02 20:03:26 得分 0

楼上能说的明白点吗。我英文不好  
  这是个计数器只有一个字段一条记录。  
  还必须用循环语句吗Top

15 楼nilnshen(光光)回复于 2005-04-02 20:15:48 得分 0

Try   this:  
  1)  
    /*     OleDbDataReader   dr=com1.ExecuteReader();  
            dr.Read();  
            string   str;  
            str=dr["cou"].ToString();  
            int   i=int.Parse(str);       */  
  ------->  
   
  int   i=   Convert.ToInt16(com1.ExecuteScalar());  
   
  2)  
  message.Text="您是第"+i+"访客";       --->     message.Text   =   "您是第"+i.ToString()+"访客";Top

16 楼tophifi(黑字先生)回复于 2005-04-02 20:31:25 得分 0

不是说了连OleDbDataReader都不需要嘛,就1列1行一个值要OleDbDataReader干吗啊,直接赋值给变量不就行了Top

17 楼tophifi(黑字先生)回复于 2005-04-02 20:36:56 得分 0

OleDbConnection   conn=new   OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=d:\\web\\db1.mdb");  
        OleDbCommand   com1=new     OleDbCommand("SELECT   *   FROM   counter",conn);  
        conn.Open();  
   
        int   i;  
   
        i   =   (int)   com1.ExecuteScalar().ToString();  
   
  if(Session["flag"]==null)  
    {  
      i   =   i++;  
    Session["flag"]="true";  
    }  
    message.Text="您是第"+   i.Tostring()   +"访客";  
     
  com1.CommaneText   =   "UPDATE   counter   SET   cou   =   "+   i;  
  com1.ExecuteNonQuery();  
   
   
  com1.Dispose();  
  conn.Close(); Top

18 楼nilnshen(光光)回复于 2005-04-02 20:54:01 得分 0

"UPDATE   counter   SET   cou   =   "   +   i;  
  if   cou   is   defined   as   char   type,   just   do   some   type   convertion   work   here   on   int   i.Top

19 楼PeakChen(一点点)回复于 2005-04-02 20:54:03 得分 0

靠,这样都有错,太离谱了吧!  
  有没有这个字段啊。。。。。。。。。?Top

20 楼tophifi(黑字先生)回复于 2005-04-02 21:50:23 得分 0

还不行的话,怀疑你数据库连接是不是成功了,数据库路径不需要\\吧,再说用Server.MapPath不是更好Top

21 楼coldpanth(^War3^)回复于 2005-04-02 23:23:30 得分 0

你确定你DataReader读出数据了吗?  
   
  OleDbDataReader   dr=com1.ExecuteReader();  
    if   (dr.HasRows)               //看看你这个dr里有没有数据,我估计是没有  
    {  
                Response.Write("有");    
    }  
    else  
    {  
                Response.Write("没有");    
    }    
   
    //dr.Read();  
     
   
    //string   str;  
    //str=dr["cou"].ToString();  
    //int   i=int.Parse(str);  
    //dr.Close();  
  Top

22 楼mfgok(想了又想学吧)回复于 2005-04-03 19:32:00 得分 0

今晚还来解决这个问题  
  按楼上两位的做了,真的没有读出数据  
  用Server.MapPath也没有读出数据,db1设为存档属性  
  这怎么办Top

23 楼vrace(Warcraft III in 1.20)回复于 2005-04-03 21:07:34 得分 0

你的   OleDbDataReader   以前是不是没有   Close   啊?Top

24 楼mfgok(想了又想学吧)回复于 2005-04-03 21:20:19 得分 0

就这样一个文件,以前也没有OPENTop

25 楼Dergen(白云兮悠悠)回复于 2005-04-03 21:24:15 得分 0

counter   表是否有数据?Top

相关问题

  • 那有错误?
  • 我真的不知道那里出了错误!请教!!
  • 请教:不知道错误!
  • 谁知道这个错误
  • 谁知道这个错误?
  • 错误在那里?
  • INSERT INTO 语句的语法错误。 不知道那里错了 :( help thx
  • 那位知道有关ASP连接数据库错误的问题..
  • 兄弟门,帮我个忙啊!!!!!,不知道那里逻辑错误了
  • Javascript函数,出现错误?不知道错误出在哪里?

关键词

  • 知道那
  • 错误

得分解答快速导航

  • 帖主:mfgok
  • LoveCherry
  • hackate
  • tophifi
  • nilnshen

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo