我有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() + "')";
但是,我不能將值保存到特定的用戶名或我用於登錄的帳戶。
如何解決此問題?
您應該使用屬性而不是使用方法從表單中獲取'textBox1.Text'的值。 'public string Textbox1Text {get {return textBox1.Text; }}。不要構建來自未經處理的用戶輸入的查詢,例如'WHERE Users ='「+ userinput +」'「;'因爲這會讓你容易受到基於注入漏洞的攻擊 – DGibbs 2014-09-25 14:43:51