2014-09-25 45 views
0

我有form1和form2。 Form1是Login,Form2是Main Menu。 我正在使用(C#訪問),並且我的數據庫中有字段,這裏是我的字段(Users,Pass,Player1,Player2)。將值插入數據庫,其中用戶=輸入

現在,我想將player1和player2字段的值插入數據庫及其相應的用戶字段。

注意:用戶是用戶名。

如何做到這一點?請幫幫我。

這裏是我當前的代碼

Form1 f2 = new Form1(); 
      f2.ShowDialog(); 
      MessageBox.Show(f2.getTextBoxVal());//This is just a test in getting the Username from Form1 which is the Login form 
      using (OleDbConnection con = new OleDbConnection(connParam)) 
      using (OleDbCommand cmd = new OleDbCommand("select count(*) from data where Users = ?")) 
      { 
       con.Open(); 
       cmd.Connection = con; 
       cmd.Parameters.AddWithValue("@player1score", player1score); 
       cmd.Parameters.AddWithValue("@player2score", player2score); 
       object objRes = cmd.ExecuteScalar(); 
       if (objRes == null || (int)objRes == 0) 
       { 

        cmd.Parameters.Clear(); 
        cmd.CommandText = "INSERT INTO data (Player1,Player2) values(?, ?) WHERE Users='" + f2.getTextBoxVal() + "')"; 
        cmd.Parameters.AddWithValue("@player1score", player1score.Text); 
        cmd.Parameters.AddWithValue("@player2score", player2score.Text); 
        int iRes = cmd.ExecuteNonQuery();//Error Here It says Missing semicolon (;) at end of SQL statement. 

        if (iRes > 0) 
         //errorProvider2.SetError(textBox1, ""); 
         //errorProvider3.SetError(textBox1, "User name available!"); 
         MessageBox.Show("Scores Save!!"); 
       } 
       else 
       { 
        MessageBox.Show("Just a Test!"); 
       } 

       } 

在Form1我使用這個代碼:

public string getTextBoxVal() 
{ 
    return textBox1.Text; 
} 

這是獲取文本在Form1

在形式上2我使用有此代碼:

Form2 f2 = new Form2(); 
f2.ShowDialog(); 
MessageBox.Show(f2.getTextBoxVal()); 

這是我的方式來檢索文本框VAL使用getTextBoxVal()從功能** * Form1的:

而且我在這裏使用它:

cmd.CommandText = "INSERT INTO data (Player1,Player2) values(?, ?) WHERE Users='" + f2.getTextBoxVal() + "')"; 

但是,我不能將值保存到特定的用戶名或我用於登錄的帳戶。

如何解決此問題?

+0

您應該使用屬性而不是使用方法從表單中獲取'textBox1.Text'的值。 'public string Textbox1Text {get {return textBox1.Text; }}。不要構建來自未經處理的用戶輸入的查詢,例如'WHERE Users ='「+ userinput +」'「;'因爲這會讓你容易受到基於注入漏洞的攻擊 – DGibbs 2014-09-25 14:43:51

回答

1

INSERT不支持,甚至需要WHERE

你不需要它,需要相應地調整你的查詢。

cmd.CommandText = "INSERT INTO data (Player1,Player2) values(?, ?)"; 

INSERT是關於向表中添加新條目。如果你想更新,請使用UPDATE命令。該命令支持「WHERE」。

UPDATE通常看起來像:

UPDATE tablename 
    SET col1 = 'val1', col2 = 'val2' ... 
WHERE id = id_value 

此外,您第一次使用的cmd看起來不正確我。 您傳遞兩個球員核心,只需要一個用戶名。

+0

但是,它並沒有將值插入到它的相應用戶名中,另一方面,它插入到下一行在數據庫訪問 – user3349418 2014-09-25 14:48:38

+0

先生,請幫助我 – user3349418 2014-09-25 14:49:15

+0

先生,它只是一個2in1遊戲.. – user3349418 2014-09-25 15:19:53

相關問題