当前位置:编程学习 > C#/ASP.NET >>

SQL排错,代码总是提示出错,大家给看看,


以下代码总是提示出错,但是我吧语句直接在ACCESS执行就OK,大家给看看,到底为什么?
代码如下



    protected void butEnter_Click(object sender, EventArgs e)
    {
        OleDbConnection con = dbOpen.CreateDBconn();
        con.Open();
        string sqlString = "insert into Clients(userName,passWord) values('admin333','1122255')";
        OleDbCommand cmd = new OleDbCommand(sqlString, con);
        cmd.ExecuteNonQuery();
        con.Close();
    }



错误提示如下



用户代码未处理 System.Data.OleDb.OleDbException
  Message="INSERT INTO 语句的语法错误。"
  Source="Microsoft JET Database Engine"
  ErrorCode=-2147217900
  StackTrace:
       在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
       在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
       在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
       在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
       在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
       在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
       在 insertUser.butEnter_Click(Object sender, EventArgs e) 位置 c:\Documents and Settings\Administrator\桌面\安保通系统\WebSite1\insertClient.aspx.cs:行号 60
       在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


--------------------编程问答-------------------- Access没有Into,SQL Server才有
标准SQL是有的,不知道Access为什么不遵守标准 --------------------编程问答-------------------- insert into Clients(userName,passWord) values('admin333','1122255')

关键是我吧这句放在 access 里执行查询时  可以运行 并添加一条记录哦  不会报错。 --------------------编程问答-------------------- 去掉  into 也不OK  晕倒了 帮忙哦  --------------------编程问答-------------------- "insert into Clients(userName,passWord) values(\'admin333\',\'1122255\') "
--------------------编程问答-------------------- Access有Into
vb.net简单代码,你参考以下:
dim objConnection as OleDbconnection
objConnection =new OleDbconnection _
        ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                      "Data Source=f:\banking.mdb")
dim strsql as string="Insert into tblusers (firstname,lastname,phonon) values (?,?,?)"

dim dbComm as new OleDbCommand(strsql,objConnection)
dbComm.Parameters.Add("firstname",OleDbType.VarChar,32,"firstname")
dbComm.Parameters.Add("lastname",OleDbType.VarChar,32,"lastname")
dbComm.Parameters.Add("phonon",OleDbType.VarChar,32,"phonon")
dbComm.Parameters("firstname").value=txtfirstname.text
dbComm.Parameters("lastname").value=txtlastname.text
dbComm.Parameters("phonon").value=txtphonon.text

try
objConnection.Open()
dbComm.ExecuteNonQuery()
catch ex as Exception
response.Write(ex.Message)
response.End()
finally
if objConnection.State=ConnectionState.Open then
objConnection.Close
end if
end try --------------------编程问答-------------------- 不是这句sql语句有问题,是你其它程序有问题,在看看你的程序吧。 --------------------编程问答-------------------- 看看你的程序吧 --------------------编程问答-------------------- 建议参数化 --------------------编程问答-------------------- 可能是楼主的所输入的数据类型跟表中的字段类型不同,有可能的!
不过建议最好不要用直接数据,改用参数@pParms --------------------编程问答-------------------- 楼主,你看一下,你的password 吧。它应该是保留字,不能做为字段,你把它改一下名,后面加一个s再试试 --------------------编程问答--------------------

string sqlString = @"insert into Clients(userName,passWord) values('admin333','1122255')";

--------------------编程问答--------------------
引用 10 楼 chenguang79 的回复:
楼主,你看一下,你的password 吧。它应该是保留字,不能做为字段,你把它改一下名,后面加一个s再试试



一语中的  果然该了  passwordS 就OK了 ,   大家以后注意了  呵呵

想不到这个问题纠缠了俺这么久哦  

感谢以上各位了 --------------------编程问答-------------------- 如果不想改,那这样也可以:password>>>>[password] --------------------编程问答-------------------- insert into [Clients]([userName],[passWord]) values('admin333','1122255')";
对access所有的字段最好都加上[],以示区分
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,