我有一个包含大量内容的数据库,现在我正在读取数据,对其进行一些处理,然后将其粘贴到新数据库中。我的代码生成了这个字符串:
query_string = "INSERT INTO OrgPhrase (EXACT_PHRASE,Org_ID) VALUES (HELLO,123)"
然后以这种方式使用:
Dim InsertCmd = New System.Data.OleDb.OleDbCommand(query_string, connection)
InsertCmd.ExecuteNonQuery()
关联的数据库(OLEdb连接)存在并打开正常,它尝试使用的所有表和列已经存在。我得到的错误消息是“没有给出一个或多个必需参数的值”
我错过了什么吗?我拼错了吗?我没有大量的数据库工作经验,但我以前从未遇到过这样的麻烦。
答案 0 :(得分:3)
我认为查询应该是
query_string = "INSERT INTO OrgPhrase (EXACT_PHRASE,Org_ID) VALUES ('HELLO',123)"
此外,可能会发生该表有超过2列非NUll且需要它们的值。
答案 1 :(得分:2)
考虑参数化查询字符串。这有几个原因。首先,您可以传递值而无需担心是否需要单引号。其次,您可以阻止SQL注入。
query_string = "INSERT INTO OrgPhrase (EXACT_PHRASE,Org_ID) VALUES (@ExactPhrase,@OrgId)"
然后根据字符串中的参数名称创建参数。当然,除非您的查询字符串始终是相同的值,但这听起来有点太硬编码而不是很好。