2017-02-15 64 views
0

我在做一個程序,我正在創建一個需要在數據庫中創建用戶訪問權限的部分。但輸入數據並點擊創建用戶按鈕後,它會給我一個錯誤。如果將用戶添加到它的工作原理數據庫,但如果你試圖通過程序增加它的結果是一個語法錯誤Visual basic在數據庫訪問中創建用戶

Else 
    Try 
     Dim myconnection As OleDbConnection 
     Dim constring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Software_Simples\Software\DataBase.accdb" 
     myconnection = New OleDbConnection(constring) 
     myconnection.Open() 
     Dim sqlQry As String 

     'sqlQry = "INSERT INTO Usernames(Username, Password) VALUES(" & TextBox2.Text & "," & TextBox3.Text & ")" 
     sqlQry = "INSERT INTO Usernames(ID_User, Username, Password) VALUES(Null,TextBox2.Text,TextBox3.Text)" 

     Dim cmd As New OleDbCommand(sqlQry, myconnection) 
     cmd.ExecuteNonQuery() 

     myconnection.Close() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
    'Fechar 
    Me.Close() 
    MessageBox.Show("Utilizador criado com suecesso: " & username_create, "Aviso", MessageBoxButtons.OK) 
End If 
+0

現在是罰款? –

+0

是的,這是張貼代碼的正確方法。現在回到你的問題。正如我所說。密碼是保留的關鍵字。如果你從ADO.NET使用它,你需要把它放在方括號中。 – Steve

+0

你可以編寫代碼,我不太清楚你在說什麼。 –

回答

0

它應該閱讀:

sqlQry = "INSERT INTO Usernames (ID_User, Username, [Password]) VALUES (Null,'" + TextBox2.Text + "','" + TextBox3.Text + "')" 
+0

我看過相似但不重複。 – Gustav

1

有至少三個問題您的代碼:
1)密碼是保留關鍵字。需要位於方括號內
2)傳遞給數據庫時的字符串值需要在單引號之間,但..請參閱第3點
3)使用參數而不是字符串連接(如果密碼包含單引號,該怎麼辦?)
4)配置一次性對象,如連接和命令。

所以重寫它

Dim constring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Software_Simples\Software\DataBase.accdb" 
Dim sqlQry = "INSERT INTO Usernames(Username, [Password]) VALUES(@name, @pwd)" 
Try 
    Using myconnection = New OleDbConnection(constring) 
    Using cmd As New OleDbCommand(sqlQry, myconnection) 
     myconnection.Open() 
     cmd.Parameters.Add("@name", OleDbType.VarWChar).Value = TextBox2.Text 
     cmd.Parameters.Add("@pwd", OleDbType.VarWChar).Value = TextBox3.Text 
     cmd.ExecuteNonQuery() 
    End Using 
    End Using 
Catch ex As Exception 
    MessageBox.Show(ex.Message) 
End Try 
+0

不要錯過Dim sqlQry as string –

+0

已更正。當編譯器可以從上下文中看到要分配的變量的類型時,確實沒有必要_as String_。 (但昏暗是) – Steve

+0

給我錯誤語法錯誤select into –