2016-04-27 61 views
-2

所以我正在登录/登记表格在vb.net 我创建的数据库和登录工程很好,但我的注册表单不希望将值插入数据库。这是我背后的代码。我不确定什么是错的。vb.net登录/注册表格不起作用

Public Class frmRegister 
Private Sub btnRegister_Click(sender As Object, e As EventArgs) Handles btnRegister.Click 
    txtUsernameRegister.Focus() 

    If txtUsernameRegister.Text = "" Or txtPasswordRegister.Text = "" Then 
     MessageBox.Show("Please enter Username And Password!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     txtUsernameRegister.Focus() 
    Else 
     Dim sqlConnection1 As New System.Data.OleDb.OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\userDB.accdb") 

     Dim cmd As New System.Data.OleDb.OleDbCommand 
     sqlConnection1.Open() 
     cmd.CommandType = System.Data.CommandType.Text 
     cmd.CommandText = "INSERT INTO userDB (username, password) VALUES ('" & txtUsernameRegister.Text & "', '" & txtPasswordRegister.Text & "')" 
     cmd.Connection = sqlConnection1 


     sqlConnection1.Close() 

     frmLogin.Show() 
     Hide() 
    End If 


End Sub 
End Class 
+0

**警告**您的代码极易受到sql注入攻击! –

+0

a [mcve]也会很棒。也**从不**存储纯文本密码。 –

+0

您的代码不起作用,因为它从不执行INSERT语句。您分配'cmd.CommandText',然后关闭连接。当你从不做任何事情来保存数据时,你期望它能够保存数据吗?魔法?此外,您的代码极易受到SQL注入的攻击,这可能会使整个数据面临风险。在这里搜索* [vba.net]参数化查询*并学习如何正确使用** now **,然后再适应不良的编码习惯。 –

回答

0

,正式确定肯怀特的评论的建议,你需要以实际执行它针对数据库调用ExecuteNonQuery你的命令。

我也必须回应关于参数的观点。除了某些值可能导致异常被抛出的事实之外,恶意用户可能会删除数据库的全部内容。

另外,出于安全原因,将纯文本密码存储在数据库中并不是一个好主意。你应该研究哈希以了解它是如何完成的。