数据库中未保存任何内容

本文关键字:任何内 保存 数据库 | 更新日期: 2023-09-27 18:00:31

我是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");
    }

数据库中未保存任何内容

尝试使用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();
    }
}

您未能执行命令。尝试:

connection.Open();
command.ExecuteNonQuery();

打开连接后忘记添加command.ExecuteNonQuery();

您需要执行命令来保存,您只是在打开一个连接。

您可能缺少以下代码:

connection.Open();
command.ExecuteNonQuery();
connection.Close(); 

您添加了参数,打开了连接,但忘记执行命令。放入

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");
相关文章: