我在数据库中插入新记录时遇到错误。请帮忙 错误是“INSERT INTO语句中的语法错误”。 好吧,我添加完整的语法。
Dim dbCommand As OleDbCommand
Dim DBConn As OleDbConnection
Dim DBInsert As New OleDbCommand()
myword = "عابد"
mypronounce = "عابِد [عا + بِد]"
mylanguage = "(عربی)"
mysiga = "( مذکر - واحد )"
mymuradifat = "زاہِد, پُجاری, مُتَّقی, پارْسا, نیک, صالِح, تَپَسّی, ذاکِر, سَنْت, صُوفی, خُدا پَرَسْت"
myenglish = "An adorer, worshipper, votary, devotee "
mymurakbat = "لَکھْنَوی دَبِسْتان, لَکھْنَوی سِکُول"
myword = Replace(myword, "'", "''")
mypronounce = Replace(mypronounce, "'", "''")
mylanguage = Replace(mylanguage, "'", "''")
mysiga = Replace(mysiga, "'", "''")
mymuradifat = Replace(mymuradifat, "'", "''")
myenglish = Replace(myenglish, "'", "''")
mymurakbat = Replace(mymurakbat, "'", "''")
' & "(word,pronounce,language,siga,mutradifat,english,murakabat) " _
DBConn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & mypath & ";Jet OLEDB:Database Password=xxxxxxxx;")
DBInsert.CommandText = "Insert Into data " _
& "(word,pronounce,language,siga,mufradat,english,murakabat) " _
& "Values (" _
& "'" & myword & "', " _
& "'" & mypronounce & "', " _
& "'" & mylanguage & "', " _
& "'" & mysiga & "', " _
& "'" & mymuradifat & "', " _
& "'" & myenglish & "', " _
& "'" & mymurakbat & "')"
DBInsert.Connection = DBConn
DBInsert.Connection.Open()
DBInsert.ExecuteNonQuery()
DBConn.Close()
答案 0 :(得分:0)
首先,看起来你会对SQL注入开放,并且应该使用参数化查询。这本身可能会为你解决它。
然而,就目前而言,它可能是由于你拥有的一个或多个字段可能有一个嵌入的单引号,因此在insert命令中取消(创建一个不平衡的引号)...或者一个分号,表示一个语句的结束并从下一个语句开始。
EDIT ..
然后它可能是插入列
之间的类型omutradifat </ P>
和
的VALUE字段mymuradifat </ p>
一个人有“muTr”......另一个人“mur”......
我肯定会将其更改为参数化查询,例如
DBInsert.CommandText = "Insert Into data " _
& "(word, pronounce, language, siga, mufradat, english, murakabat) " _
& "Values ( ?, ?, ?, ?, ?, ?, ? )";
DBInsert.Parameters.AddWithValue( "myWord", myword );
DBInsert.Parameters.AddWithValue( "myPronounce", mypronounce );
DBInsert.Parameters.AddWithValue( "myLanguage", mylanguage );
DBInsert.Parameters.AddWithValue( "mySiga", mysiga );
DBInsert.Parameters.AddWithValue( "myUradifat", mymuradifat );
DBInsert.Parameters.AddWithValue( "myEnglish", myenglish );
DBInsert.Parameters.AddWithValue( "myMurakbat", mymurakbat );
此外,在插入样本后,您可以摆脱
YourVariable = Replace(YourVariable,“'”,“''”)
实例,因为参数化不会在命令本身中出现错误匹配引号的问题。
答案 1 :(得分:0)
如果不知道收到的错误,就无法确定问题所在。乍一看,声明看起来是正确的。我所看到的是mymuradifat和mymurakbat的变量与mutradifat和murakabat的拼写不匹配,如果这就是你命名的那个就没有问题。你确定名字是否正确。错误是什么?
答案 2 :(得分:0)
DBInsert.CommandText = "Insert Into data " _
& "(word,pronounce,language,siga,mufradat,english,murakabat) " _
我不认为那两个下划线“_”应该在那里。
答案 3 :(得分:0)
像这样诊断SQL可能很棘手。最好的方法是断点创建insert命令的行,然后获取创建的SQL并将其粘贴到管理工作室(或任何可以正确查看文本的地方)。
您可能会发现正在添加额外的'或如上所述的拼写错误。重新检查所有列名并仔细检查要执行的SQL。还要检查你没有任何字符 - 哪个sql可以考虑作为评论。并且该SQL可以存储您传入的字符。
除此之外,我强烈建议使用存储过程和参数,即使这只是为了您自己的个人用途,使用良好实践并且构建它的好习惯也不会有害。