【问题标题】:Nothing was saved in the database数据库中没有保存任何内容
【发布时间】:2011-09-23 04:44:10
【问题描述】:

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

    }

【问题讨论】:

标签: c# mysql visual-studio-2010 database-connection


【解决方案1】:

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

【讨论】:

  • 感谢您的帮助。不过我遇到了一个新问题。当我单击添加时,会出现一条错误消息,指出“输入字符串的格式不正确”。这可能是什么原因?
  • @schadi:打开一个新问题。确保将堆栈跟踪和 整个 错误消息放入其中。您可能想发布您正在使用的代码并指出发生错误的确切行。
【解决方案2】:

您未能执行您的命令。试试:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 你应该让 OP 知道那是什么 - 如果他们忘记了一些如此基本的东西,他们可能不知道需要做什么。
      【解决方案5】:

      您可能缺少此代码:

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

      【讨论】:

        【解决方案6】:

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

        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");
        

        【讨论】:

          猜你喜欢
          • 2011-07-19
          • 2021-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-18
          • 1970-01-01
          • 1970-01-01
          • 2020-10-11
          相关资源
          最近更新 更多