日期:2014-05-19  浏览次数:20476 次

c#操作access插入失败..急....
protected   void   btnsubmit_Click(object   sender,   EventArgs   e)
        {
                string   strconn;
                string   strcomm;
                strconn   =   @ "Provider=Microsoft.Jet.Oledb.4.0;Data   Source= "+this   .Server   .MapPath   ( "db/db.mdb ");
                strcomm   =   "insert   into   user(userName,userpwd)   values(@uname,@upwd) ";
                OleDbConnection   myconn   =   new   OleDbConnection(strconn);
                myconn.Open();//打开数据连接  

                OleDbCommand   mycomm   =   new   OleDbCommand(strcomm,myconn   );
                mycomm.Parameters.Add( "@uname ",this.tbname.Text   );
                mycomm.Parameters.Add( "@upwd ",this.tbpwd   .Text   );
                mycomm.ExecuteNonQuery();
                mycomm.Clone();
                myconn.Close();

           
        }
    错误提示:
INSERT   INTO   语句的语法错误。  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.Data.OleDb.OleDbException:   INSERT   INTO   语句的语法错误。



------解决方案--------------------
自己写sql语句吧。
------解决方案--------------------
INSERT INTO 语句的语法错误
你可以把sql语句Response.write(sql)出来,放到access里的sql视图里分析一下 啊
------解决方案--------------------
显然是这里 values(@uname,@upwd) ";
------解决方案--------------------
insert into user(userName,userpwd) values( '@uname ', '@upwd ')

试下呢



------解决方案--------------------
楼主要这样声明Command的参数:

MyComm.Parameters.Add( "@uname ",SqlDbType.VarChar,20);
MyComm.Parameters.Add( "@upwd ",SqlDbType.VarChar,20);
MyComm.Parameters[ "@uname "].Value = this.tbname.Text;
MyComm.Parameters[ "@upwd "].Value = this.tbpwd.Text;