Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net VB 2012错误消息_Vb.net - Fatal编程技术网

Vb.net VB 2012错误消息

Vb.net VB 2012错误消息,vb.net,Vb.net,我得到以下错误:没有为类型“String”和“System.Windows.Forms.TextBox”定义运算符“&”: 在以下代码行中: cmd.CommandText = "INSERT INTO users(userid, passWord, firstName, lastName, jobTitle, SSN) VALUES (" & Me.adduseridtxtbox & ",'" & Me.addpasswordtxt & ",'" & M

我得到以下错误:没有为类型“String”和“System.Windows.Forms.TextBox”定义运算符“&”:

在以下代码行中:

cmd.CommandText = "INSERT INTO users(userid, passWord, firstName, lastName, jobTitle, SSN) VALUES (" & Me.adduseridtxtbox & ",'" & Me.addpasswordtxt & ",'" & Me.addfirstnametxt & ",'" & Me.addlastnametxt & ",'" & Me.jobcbox & ",'" & Me.addssntxt & "')"
代码如下:

Private Sub addbtn_Click(sender As Object, e As EventArgs) Handles addbtn.Click
    Dim cmd As New OleDbCommand
    If Not connection.State = ConnectionState.Open Then
        connection.Open()
    End If
    cmd.Connection = connection
    ' add data to table 
    cmd.CommandText = "INSERT INTO users(userid, passWord, firstName, lastName, jobTitle, SSN) VALUES (" & Me.adduseridtxtbox & ",'" & Me.addpasswordtxt & ",'" & Me.addfirstnametxt & ",'" & Me.addlastnametxt & ",'" & Me.jobcbox & ",'" & Me.addssntxt & "')"

    cmd.ExecuteNonQuery()
    'refresh data in list
    'close connection
    connection.Close()
End Sub

您必须使用
Me.adduseridtxtbox.Text
(它获取
TextBox
的值),而不是直接使用
TextBox

另外,请,请,阅读并了解如何将这些参数与
OleDbCommand
一起使用以防止注入。微软甚至提供了一些例子


目前,如果您让用户自己填写此表单,那么您的代码是非常危险的,因为他们可以完全控制您的数据库。无论如何,使用OLEDB参数是一个很好的实践。您似乎在这里处理社会保险号码——您的用户应该得到某种形式的安全。

您应该尝试在查询中使用/声明参数。 例如:

cmd.CommandText = ("INSERT INTO users(userid, passWord, firstName, lastName, jobTitle, SSN) " & _ 
                   "VALUES (@uid, @pw, @fn, @ln, @job, @ssn)")
With cmd.Parameters
.Clear()
.AddWithValue("uid", adduseridtxtbox.Text)
.AddWithValue("uid", adduseridtxtbox.Text)
.AddWithValue("pw", addpasswordtxt.Text
.AddWithValue("fn", addfirstnametxt.Text)
.AddWithValue("ln", addlastnametxt.Text)
.AddWithValue("job",jobcbox.SelectedValue)
.AddWithValue("ssn", addssntxt.Text)
End With
cmd.ExecuteNonQuery()

您的SQL语句不正确。如何将对象用作字符串?应该是
cmd.CommandText=“在用户(用户名、密码、名字、名字、工作名称、SSN)中插入值(“&Me.adduseridtxtbox.Text&”,“&Me.addpasswordtxt.Text&”,“&Me.addfirstnametxt.Text&”,“&Me.addlastnametxt.Text&”,“&Me.addlastnametxt.Text&”,“&Me.jobcbox.Text&”,“&Me.addssntxt.Text&”)


使用参数化查询可防止SQL注入并保护数据库系统免受恶意用户的攻击。

它告诉您TextBox不是字符串,您需要使用TextBox的Text属性。例如,
Me.addpasswordtxt.Text
A
TextBox
不是字符串,因此不能像以前那样连接它。使用
TextBox.Text
属性。两个非常好的答案,一个是您在代码中使用的代码。您应该接受该答案(单击复选标记)以将其从未答复列表中移除,并显示您参与了该过程。感谢您提供的信息…将大大帮助我…至于ssn…它们是虚构的…但我将进行您(所有人)建议的调整。此外,如果数据库中的用户表具有自动生成的编号,该怎么办。是否需要将其纳入代码中?如果是,怎么做?如果列中有一个是自动生成的数字,则不需要在查询中包含该数字。