作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写代码以将用户名和密码插入到名为 Users 的数据库中。
当我尝试运行代码时,它说 INSERT 语句的语法有错误,但我终生无法找到它。
我正在使用另一个名为 RunSQL 的函数运行 SQL 语句,如果需要,我可以提交该函数,但它与我使用它运行的所有其他 SQL 语句都可以正常工作。
用户表具有以下列及其数据类型
User_ID - 自动编号(主键)
用户名 - 短文本
密码 - 短文本
我尝试在要插入表中的值周围添加“”,并删除 & 并使其成为一个连续的字符串。我尝试添加/删除 ;但没有任何效果。
Dim sql As String = "INSERT INTO Users (Username, Password) " &
"VALUES (" & username_Textbox.Text & " , " & password_Textbox.Text & ");"
RunSQL(sql)
MessageBox.Show("User Added")
Private Sub RunSQL(ByVal sql As String)
Dim conn As OleDbConnection = New
OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Paper_Gen_Database.accdb;")
conn.Open()
Dim cmd As New OleDbCommand(sql, conn)
cmd.ExecuteNonQuery()
System.Threading.Thread.Sleep(500)
End Sub
最佳答案
这是使用参数的一种方式。使用参数非常重要,否则您将面临 SQL 注入(inject)的风险,这可能会破坏您的数据库。实际上,以这种方式编写 SQL 语句要容易得多,因为您不必担心字符串中的所有引号是否正确。Using...End Using
block 确保即使出现错误,您的数据库对象也已关闭和处置。这很重要,因为它会释放所有正在使用的非托管资源。
在实际应用程序中,您永远不会将密码保存为纯文本,但这是另一天的主题。
Private Sub InsertUser()
Dim sql As String = "INSERT INTO Users (Username, [Password]) VALUES (@username, @password);"
Using conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Paper_Gen_Database.accdb;")
Using cmd As New OleDbCommand(sql, conn)
cmd.Parameters.Add("@username", OleDbType.VarChar).Value = username_Textbox.Text
cmd.Parameters.Add("@password", OleDbType.VarChar).Value = password_Textbox.Text
conn.Open()
cmd.ExecuteNonQuery()
End Using
End Using
MessageBox.Show("User Added")
End Sub
关于sql - 关于 SQL 语句的语法,我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54480676/
我无法在附加行中显示“真”、“假”、"is"和“否”按钮。 我在这里有一个应用程序:Application 请按照以下步骤使用应用程序: 1。当你打开应用程序时,你会看到一个绿色的加号按钮,点击 在此
我是一名优秀的程序员,十分优秀!