VB 2012错误消息

时间:2015-03-25 02:21:23

标签: vb.net

我收到以下错误:运营商'&'没有为类型'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

3 个答案:

答案 0 :(得分:0)

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

另外,请 了解OleDbParameter以及如何在OleDbCommand中使用这些参数防止注射。微软甚至提供了例子。

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

答案 1 :(得分:0)

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

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()

答案 2 :(得分:0)

您的SQL语句不正确。如何将对象用作字符串?它应该是 cmd.CommandText = "INSERT INTO users(userid, passWord, firstName, lastName, jobTitle, SSN) VALUES ('" & Me.adduseridtxtbox.Text & ",'" & Me.addpasswordtxt.Text & ",'" & Me.addfirstnametxt.Text & ",'" & Me.addlastnametxt.Text & ",'" & Me.jobcbox.Text & ",'" & Me.addssntxt.Text & "')"

使用参数化查询来防止SQL注入并使数据库系统免受恶意用户的攻击。<​​/ p>