2016-04-27 32 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

[mcve]も素晴らしいでしょう。 **平文パスワードを保存しない** –

+0

INSERT文を実行しないため、コードが機能しません。 'cmd.CommandText'を割り当ててから、接続を閉じます。データを保存するための何もしないときに、データを保存するにはどのように期待していますか?マジック?また、コードはSQLインジェクションに対して非常に脆弱で、データ全体を危険にさらす可能性があります。 * [vba.net]のパラメータ化されたクエリ*をここで検索し、正しくコーディングする方法に慣れる前に**今** **適切に行う方法を学んでください。 –

答えて

0

ケン・ホワイトさんのコメントで提案を形式化するために、あなたが実際にデータベースに対してそれを実行するために、あなたのコマンドにExecuteNonQueryを呼び出す必要があります。

パラメータに関しても感情をエコーする必要があります。一部の値によって例外がスローされる可能性があることを除けば、悪意のあるユーザーがデータベースの内容全体を削除する可能性があります。

また、セキュリティ上の理由からプレーンテキストのパスワードをデータベースに保存することはお勧めしません。どのように正しく行われたかを知るためには、ハッシュを調べる必要があります。

関連する問題