我正在使用VB 2010并已成功将其连接到SQL Management Studio 2008.我能够连接到我称为“TestDatabase”的数据库,并且可以成功地将数据添加到数据库表。所以现在问题在于我只能通过代码更改我想要输入数据库的数据。我想使用我为此目的创建的文本框。这是我的CommendText:
sqCmd.CommandText = "INSERT INTO TestTable" & "(FirstColumn, SecondColumn)" & "VALUES (textbox1,textbox1)"
我指定为(textbox1,textbox1)的字符串中的部分是针对我想要放入的值,但似乎是“textbox1”这个词而不是文本框的值。
我认为这有一些特殊的语法。请通知我。
答案 0 :(得分:1)
那是因为你将它用作字符串。 您可以尝试在线添加文本框值:
sqCmd.CommandText = "INSERT INTO TestTable" & "(FirstColumn, SecondColumn)" & "VALUES (" & textbox1 & "," & textbox1 & ")"
或者甚至更好地查看sql parameters这是处理parameterized queries
的更好方法,因为除了查询简单性之外,它还会阻止sql injections
使用sql参数,您的语句可以是:
sqCmd.CommandText = "INSERT INTO TestTable" & "(FirstColumn, SecondColumn)" & "VALUES (@textboxValue,@textboxValue)"
sqCmd.Parameters.Add(new SqlParameter("@textboxValue", textbox1))
您得到的错误是因为您将文本框直接解析为数据库而不是实际值。在上面的例子中,我只假设textbox1是之前声明的字符串变量。要解决此问题,您可以更改命令:
Dim myTextBoxValue As String
myTextBoxValue = textbox1.Text
sqCmd.CommandText = "INSERT INTO TestTable" & "(FirstColumn, SecondColumn)" & "VALUES (@textboxValue,@textboxValue)"
sqCmd.Parameters.Add(new SqlParameter("@textboxValue", myTextBoxValue ))
答案 1 :(得分:0)
你应该像这样连接字符串:
sqCmd.CommandText = "INSERT INTO TestTable (FirstColumn, SecondColumn) VALUES (" & textbox1 .Text & ", " & textbox2.Text & ")"
但是,你的方法并不好。这种查询执行对SQL Injection攻击是开放的。您应该考虑使用存储过程或参数化查询。