我将一个SQL语句放入visual中的按钮,使其在数据库中插入数据,当我触摸它时,会发生以下错误:
从字符串“Insert into TBL_Usuario_102 valu”转换为“Double”类型无效。
这是按钮中的代码:
Private Sub Guardar_Click(sender As Object, e As EventArgs) Handles Guardar.Click
If NombreDePersona.Text <> "" And Cedula.Text <> "" And RepetirContraseña.Text <> "" And Contraseña.Text <> "" Then
If (RepetirContraseña.Text = Contraseña.Text) Then
instruccionSQL = New SqlClient.SqlCommand("Insert into TBL_Usuario_102 values" +
"(" + Cedula.Text + "," +
NombreDePersona.Text + "," + 3 +
"," + Contraseña.Text + "," +
FechaInclusion.Text + "," + 0 +
"," + FechaInclusion.Text + "," + 3 + ")")
MsgBox("Datos Guardados Correctamente")
Cedula.Clear()
NombreDePersona.Clear()
Contraseña.Clear()
RepetirContraseña.Clear()
Else
MsgBox("Las contraseñas no coinciden")
End If
Else
MsgBox("Escriba en Cada Campo")
End If
End Sub
SQL连接在一个模块中,它运行良好,因为当我在SQL Server中手动插入数据时,登录工作正常。
数据库表中的数据类型按此顺序
答案 0 :(得分:1)
创建这样的SQL字符串是危险的,因为它可能导致SQL injection attacks。通常建议使用命令参数;但是,您也可以通过加倍来转义字符串中的单引号。这应该使这种攻击变得不可能。命令参数还具有以下优点:您不必关心字符串(并转义它们),数字,布尔值和日期的格式。例如。见:How to pass a parameter from vb.net。
就像现在一样,SQL语句还有另一个问题。字符串必须用单引号括起来。也可以使用[class*="col-"] {
max-width: 100%;
flex-basis: 100%
}
进行字符串连接。不是&
(这是+
,它让VB认为你想要添加+
)。
您的文字和数字输入的类型似乎与表格中的类型不一致(Doubles
和NombreDePersona
?)并且您要插入varchar(20)
两次。
我还会明确指定列名
FechaInclusion
最后,你不执行你的命令。打开连接后:
INSERT INTO TBL_Usuario_102 (column_name1, column_name2, ...) values ('a text', 3, ...)