我有form1和form2。 Form1是Login,Form2是Main Menu。 我正在使用(C#Access),我的数据库中有字段,这是我的字段(Users,Pass,Player1,Player2)。
现在,我想将player1和player2字段中的值插入到具有相应Users字段的数据库中。
注意:用户是用户名。
怎么做?请帮帮我。
这是我当前的代码
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());
这是我使用** Form1 *中的 getTextBoxVal()函数检索文本框val的方法:
我在这里使用它:
cmd.CommandText = "INSERT INTO data (Player1,Player2) values(?, ?) WHERE Users='" + f2.getTextBoxVal() + "')";
但是,我无法将值保存到我用于登录的特定用户名或帐户。
如何解决这个问题?
答案 0 :(得分: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
对我来说似乎并不合适。
你传递了两个玩家核心,只需要一个用户名。