问题描述
我的代码:try{if(textBox1.Text!=""){//设定数据连接字符串,此字符串的意思是打开Sqlserver数据库,服务器名称为server1,数据库为data1,用户名为sa。stringstrCon="Provider=SQLOLEDB.1;PersistSecurityInfo=False;InitialCatalog=通讯录;UserID=sa;DataSource=JUJUMAO";OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();stringstrInsert="INSERTINTO用户信息表(姓名,年龄,性别,联系电话,性格,所在院校,爱好,)VALUES(";strInsert+=textBox1.Text+",";strInsert+=textBox2.Text+",";strInsert+=textBox3.Text+",";strInsert+=textBox4.Text+",";strInsert+=textBox5.Text+",";strInsert+=textBox6.Text+",";strInsert+=textBox7.Text+")";System.Data.OleDb.OleDbCommandinst=newSystem.Data.OleDb.OleDbCommand(strInsert,myConn);inst.ExecuteNonQuery();myConn.Close();通讯录DataSet.Tables["person"].Rows[用户信息表BindingSource.Position].BeginEdit();通讯录DataSet.Tables["person"].Rows[用户信息表BindingSource.Position].EndEdit();通讯录DataSet.Tables["person"].AcceptChanges();}else{MessageBox.Show("姓名不能为空!","错误!");}但是再向数据库添加记录的时候出错保存数据记录发生System.Data.OleDb.OleDbException:第1行')'附近有语法错误在System.Data.OleDb.OleDbcommand.ExecuteReadrInternat(CommandBehaviorbehavior,Stringmethod)在System.Data.OleDb.OleDbcommand.ExecuteNonQuery()在WindowsApplication1.Form2.button7_click(objectsender,EventArgse).............行号121这是什么问题呀!!!高手能解释一下么。本人才开始学C#不太会,能讲清楚些最好,谢谢了!行号121语句是inst.ExecuteNonQuery();
解决方案
解决方案二:
VALUES('";strInsert+=textBox1.Text+"','";strInsert+=textBox2.Text+"','";strInsert+=textBox3.Text+"','";strInsert+=textBox4.Text+"','";strInsert+=textBox5.Text+"','";strInsert+=textBox6.Text+"','";strInsert+=textBox7.Text+"')";
解决方案三:
去看看SQL
解决方案四:
最好还是写成带parameters的.
解决方案五:
把值都用单引号括起来
解决方案六:
VALUES('";strInsert+=textBox1.Text+"','";strInsert+=textBox2.Text+"','";strInsert+=textBox3.Text+"','";strInsert+=textBox4.Text+"','";strInsert+=textBox5.Text+"','";strInsert+=textBox6.Text+"','";strInsert+=textBox7.Text+"')";你的sql语句要好好的补补了,字符串类型要单引号括起来,还有啊,不建议拼凑sql,会造成注入攻击的,推荐参数化parameter
解决方案七:
http://www.knowsky.com/339188.html
解决方案八:
还是问题依旧啊···保存数据记录发生System.Data.OleDb.OleDbException:第1行')'附近有语法错误在System.Data.OleDb.OleDbcommand.ExecuteReadrInternat(CommandBehaviorbehavior,Stringmethod)在System.Data.OleDb.OleDbcommand.ExecuteNonQuery()在WindowsApplication1.Form2.button7_click(objectsender,EventArgse)
解决方案九:
最好的找错方法时,运行时把你的数据库语句打在控制台上,然后复制到查询分析其中,运行下,看哪里错了
解决方案十:
还有种不让数据库语句出错的方法是:先在查询分析器中吧数据库语句写一遍,确定没有错后,复制到程序中,然后将值改为你所用的变量值
解决方案十一:
char类型的列需要在前后加单撇号。
解决方案十二:
把这段代码用在了查询分析器中运行了下!stringstrInsert="INSERTINTO用户信息表(姓名,年龄,性别,联系电话,性格,所在院校,爱好,)VALUES(";strInsert+=textBox1.Text+",";strInsert+=textBox2.Text+",";strInsert+=textBox3.Text+",";strInsert+=textBox4.Text+",";strInsert+=textBox5.Text+",";strInsert+=textBox6.Text+",";strInsert+=textBox7.Text+")";System.Data.OleDb.OleDbCommandinst=newSystem.Data.OleDb.OleDbCommand(strInsert,myConn);inst.ExecuteNonQuery();myConn.Close();服务器:消息170,级别15,状态1,行1第1行:'='附近有语法错误。怎么解决啊····
解决方案十三:
加上引号stringstrInsert="INSERTINTO用户信息表(姓名,年龄,性别,联系电话,性格,所在院校,爱好,)VALUES('";strInsert+=textBox1.Text+"','";strInsert+=textBox2.Text+"','";strInsert+=textBox3.Text+"','";strInsert+=textBox4.Text+"','";strInsert+=textBox5.Text+"','";strInsert+=textBox6.Text+"','";strInsert+=textBox7.Text+"')";System.Data.OleDb.OleDbCommandinst=newSystem.Data.OleDb.OleDbCommand(strInsert,myConn);inst.ExecuteNonQuery();myConn.Close();
解决方案十四:
用楼上的改后。依然存在那个问题!!!保存数据记录发生System.Data.OleDb.OleDbException:第1行')'附近有语法错误在System.Data.OleDb.OleDbcommand.ExecuteReadrInternat(CommandBehaviorbehavior,Stringmethod)在System.Data.OleDb.OleDbcommand.ExecuteNonQuery()在WindowsApplication1.Form2.button7_click(objectsender,EventArgse)改怎么弄也!!!
解决方案十五:
设个断点,设法得到insert的完整语句,这样就知道语法错在哪了。这种问题一般是缺少引号数据库里的varchar等类型都是需要加''的
解决方案:
12楼的也多了一个,号了(爱好后面没豆号的)```串语句这东西小心点就是了```
解决方案:
stringstrInsert="INSERTINTO用户信息表(姓名,年龄,性别,联系电话,性格,所在院校,爱好,)VALUES('";爱好的后面不要家","