我是Visual Studio 2010和MySQL的新手。我正在创建一个表单,用户将在其中输入要添加到数据库中的信息。没有错误发生,但是当我检查MySQL时,我输入的数据没有保存在我的数据库中。有人可以检查我的代码是否有错误或缺乏正确性?请帮忙。感谢。
这是我的代码:
private void button_adduser_Click(object sender, EventArgs e)
{
string MyConString = "SERVER=localhost;" + "DATABASE=timekeeping;" + "UID=root;" + "PASSWORD=admin;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
command.Connection = connection;
command.CommandText = "insert into users(addfname, addmname, addlname, addposition, addcontact, addemail, addbday, addusername, addpassword) values(@fname, @mname, @lname, @position, @contactnumber, @emailadd, @birthday, @username, @password)";
command.Parameters.Add(new MySqlParameter("@fname", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@mname", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@lname", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@position", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@contactnumber", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@emailadd", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@birthday", SqlDbType.Date));
command.Parameters.Add(new MySqlParameter("@username", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@password", SqlDbType.VarChar));
command.Parameters["@fname"].Value = addfname.Text.ToLower();
command.Parameters["@mname"].Value = addmname.Text.ToLower();
command.Parameters["@lname"].Value = addlname.Text.ToLower();
command.Parameters["@position"].Value = addposition.Text;
command.Parameters["@contactnumber"].Value = addcontact.Text;
command.Parameters["@emailadd"].Value = addemail.Text;
command.Parameters["@birthday"].Value = addbday.Text;
command.Parameters["@username"].Value = addusername.Text;
command.Parameters["@password"].Value = addpassword.Text;
connection.Open();
MessageBox.Show("Data Saved");
}
答案 0 :(得分:4)
尝试使用command.ExecuteNonQuery()
。另请注意,如果要返回单个值(例如,新插入记录的ID),则可以使用command.ExecuteScalar()
。您还应该使用using
语句来确保为命令和连接调用Dispose
方法。整个代码看起来像这样:
using(MySqlConnection connection = new MySqlConnection(MyConString))
{
connection.Open();
using(MySqlCommand command = connection.CreateCommand())
{
command.CommandText = "insert into users(addfname, addmname, addlname, addposition, addcontact, addemail, addbday, addusername, addpassword) values(@fname, @mname, @lname, @position, @contactnumber, @emailadd, @birthday, @username, @password)";
command.Parameters.Add(new MySqlParameter("@fname", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@mname", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@lname", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@position", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@contactnumber", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@emailadd", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@birthday", SqlDbType.Date));
command.Parameters.Add(new MySqlParameter("@username", SqlDbType.VarChar));
command.Parameters.Add(new MySqlParameter("@password", SqlDbType.VarChar));
command.Parameters["@fname"].Value = addfname.Text.ToLower();
command.Parameters["@mname"].Value = addmname.Text.ToLower();
command.Parameters["@lname"].Value = addlname.Text.ToLower();
command.Parameters["@position"].Value = addposition.Text;
command.Parameters["@contactnumber"].Value = addcontact.Text;
command.Parameters["@emailadd"].Value = addemail.Text;
command.Parameters["@birthday"].Value = addbday.Text;
command.Parameters["@username"].Value = addusername.Text;
command.Parameters["@password"].Value = addpassword.Text;
//Execute command
command.ExecuteNonQuery();
}
}
答案 1 :(得分:2)
您无法执行命令。尝试:
connection.Open();
command.ExecuteNonQuery();
答案 2 :(得分:0)
您添加了参数,打开了连接但忘记执行命令。放
command.ExecuteNonQuery();
在警报框之前。
作为额外的奖励,您可能希望将内容包装在using语句中。这将确保您的对象被正确处理并且您的连接已关闭;
using (MySqlConnection connection = new MySqlConnection(MyConString))
{
using (MySqlCommand command = connection.CreateCommand())
{
command.Connection = connection;
/// the rest of your database code goes here
command.ExecuteNonQuery();
}
MessageBox.Show("Data Saved");
答案 3 :(得分:0)
打开连接后,您忘记添加command.ExecuteNonQuery();
。
答案 4 :(得分:0)
你需要执行命令来保存,你只是打开一个连接。
答案 5 :(得分:0)
您可能缺少此代码:
connection.Open();
command.ExecuteNonQuery();
connection.Close();