有关向数据库添加信息,请参阅此问题

时间:2012-02-20 07:40:04

标签: visual-studio-2010 sql-server-2008

我正在使用VB 2010并已成功将其连接到SQL Management Studio 2008.我能够连接到我称为“TestDatabase”的数据库,并且可以成功地将数据添加到数据库表。所以现在问题在于我只能通过代码更改我想要输入数据库的数据。我想使用我为此目的创建的文本框。这是我的CommendText:

sqCmd.CommandText = "INSERT INTO TestTable" & "(FirstColumn, SecondColumn)" & "VALUES (textbox1,textbox1)"

我指定为(textbox1,textbox1)的字符串中的部分是针对我想要放入的值,但似乎是“textbox1”这个词而不是文本框的值。

我认为这有一些特殊的语法。请通知我。

2 个答案:

答案 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攻击是开放的。您应该考虑使用存储过程或参数化查询。