我有一个为计时器设置的全局变量“I”,我正在创建的程序让用户玩游戏级别并将其等级时间存储在与其他用户一起的数据库中。这就是我已经拥有的。
public static class Global
{
public static int I = 0;
}
^这是计时器的全局变量。
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Adam\Documents\Data2.mdf;Integrated Security=True;Connect Timeout=30");
SqlDataAdapter sad = new SqlDataAdapter("Select Count(*) From Login where Username= '" + txtUsername.Text + "' and Password='" + txtPassword.Text + "'", con);
SqlCommand cmd = new SqlCommand("INSERT INTO HighScore (Username, Score) VALUES(@Username,@Score)", con);
DataTable dt = new DataTable(); //empty table
sad.Fill(dt);
if (dt.Rows[0][0].ToString() == "1")
{
con.Open();
cmd.Parameters.AddWithValue("@USERNAME", txtUsername.Text);
cmd.Parameters.AddWithValue("@Score", Global.I);
}
else // else it will display this error
{
MessageBox.Show("Please enter the correct login details");
}
^^这是游戏结束屏幕的代码,你可以看到我已经尝试使用我的数据库中HighScore表中的Global.I和addwithvalue @Score。 现在,当我点击按钮时,它不会向数据库写任何内容,但是当我尝试保存时我没有收到任何错误,这就是为什么我感到困惑。 任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
在执行任何命令之前,首先必须打开连接。您在致电Fill()
后打开连接!!您还必须执行cmd
。尝试:
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Adam\Documents\Data2.mdf;Integrated Security=True;Connect Timeout=30");
SqlDataAdapter sad = new SqlDataAdapter("Select Count(*) From Login where Username= '" + txtUsername.Text + "' and Password='" + txtPassword.Text + "'", con);
SqlCommand cmd = new SqlCommand("INSERT INTO HighScore (Username, Score) VALUES(@Username,@Score)", con);
con.Open();
cmd.Parameters.AddWithValue("@USERNAME", txtUsername.Text);
cmd.Parameters.AddWithValue("@Score", Global.I);
DataTable dt = new DataTable(); //empty table
sad.Fill(dt);
cmd.ExecuteNonQuery();
您也知道如何正确使用参数也是令人钦佩的,但是您只能在1种情况下使用它们而不是两种查询。