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')";
--------------------编程问答--------------------
一语中的 果然该了 passwordS 就OK了 , 大家以后注意了 呵呵
想不到这个问题纠缠了俺这么久哦
感谢以上各位了 --------------------编程问答-------------------- 如果不想改,那这样也可以:password>>>>[password] --------------------编程问答-------------------- insert into [Clients]([userName],[passWord]) values('admin333','1122255')";
对access所有的字段最好都加上[],以示区分
补充:.NET技术 , ASP.NET