我怎么能在MySQL数据库中插入数据?(How I can Insert Data in the M

2019-08-03 07:16发布

我有一个ASP.NET应用程序和MySQL数据库。 我想要写一个类来插入,删除,并显示从数据库中的数据。 我有一个连接到数据库,但我不能在数据库中插入数据。

我的班级插入方法:

public string CreateEntry(string Connectionstring, string mitarbeiter)
{
    connection = new MySqlConnection(Connectionstring);
    try
    {
        var command = connection.CreateCommand();
        command.CommandText = "INSERT INTO tb_mitarbeiter (Vorname) VALUES ('tom')";
        connection.Open();
        return "Mitarbeiter wurde angelegt";
    }
    catch (Exception ex)
    {
        return ex.Message;
    }
    finally
    {
        connection.Close();
    }
}

Connectionstring是正确的。 我没有得到一个错误,但没有在数据库中没有数据。

我的表名:tb_mitarbeiter列:ID和名字

Answer 1:

您应该简单地执行命令

....
MySqlCommand command = connection.CreateCommand();
command.CommandText = "INSERT INTO tb_mitarbeiter (Vorname) VALUES ('tom')";
connection.Open();
command.ExecuteNonQuery();
....

我想这mitarbeiter是应该在数据库里设置的真正价值。
如果是这样的话记得要使用参数来插入/更新数据

MySqlCommand command = connection.CreateCommand();
command.CommandText = "INSERT INTO tb_mitarbeiter (Vorname) VALUES (?name)";
command.Parameters.AddWithValue("?name", mitarbeiter);
connection.Open();
command.ExecuteNonQuery();


Answer 2:

做一个插入/更新/删除ü应该添加

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

对于选择()来显示从数据库中的数据:

connection.Open();
command.ExecuteReader();


Answer 3:

你忘了调用command.ExecuteNonQuery执行命令()。 这是我通常会做到这一点:

public string CreateEntry(string connectionString, string valueToInsert)
{
    var stringToReturn = "";

    try
    {
        using(var connection = new MySqlConnection(connectionString))
        {
            //Open connection
            connection.Open();

            //Compose query using sql parameters
            var sqlCommand = "INSERT INTO table_name (field_name) VALUES (@valueToInsert)";

            //Create mysql command and pass sql query
            using(var command = new MySqlCommand(sqlCommand, connection))
            {
                command.Parameters.AddWithValue("@valueToInsert", valueToInsert);
                command.ExecuteNonQuery();
            }           

            stringToReturn ="Success Message";
        }
    }
    catch(exception ex)
    {
        stringToReturn = "Error Message: " + ex.Message;
    }

    return stringToReturn;
}

有几个关键的事情要记住:

  1. 包装一次性对象与使用。 在的MySqlConnection的情况下,它会正确地关闭和处置的连接时,其超出范围。
  2. 通过你的查询中值时使用的SQL参数。 这将避免SQL注入和更容易维护。
  3. 就个人而言,我喜欢有功能的一个出口。 在这个例子中,“stringToReturn”变量保存的值一旦该功能完成既成功地或在故障的情况下执行返回。


Answer 4:

你是不是在执行命令使用SqlCommand.ExecuteNonQuery

try
{
        MySqlCommand command = connection.CreateCommand();
        command.CommandText = "INSERT INTO tb_mitarbeiter (Vorname) VALUES ('tom')";
        connection.Open();
        command.ExecuteNonQuery();
        return "Mitarbeiter wurde angelegt";
 }
 catch (Exception ex)
 {
      return ex.Message;
 }
 finally
 {
       connection.Close();
 }


Answer 5:

你错过了写这篇文章: -

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


Answer 6:

{
串MyConnection2 = “数据源=本地主机;端口= 3306;用户名=根;密码= 1234”;

        string Query = "insert into DBname.TableName(id,Name,First_Name,Age,Address) values('" +this.IdTextBox.Text+ "','" +this.NameTextBox.Text+ "','" +this.FirstnameTextBox.Text+ "','" +this.AgeTextBox.Text+ "','" +this.AddressTextBox.Text+ "');";  

        MySqlConnection MyConn2 = new MySqlConnection(MyConnection2);  

        MySqlCommand MyCommand2 = new MySqlCommand(Query, MyConn2);  
        MySqlDataReader MyReader2;  
        MyConn2.Open();  
        MyReader2 = MyCommand2.ExecuteReader();     
        MessageBox.Show("Save Data");  
        while (MyReader2.Read())  
        {                     
        }  
        MyConn2.Close();  
    }  
    catch (Exception ex)  
    {   
        MessageBox.Show(ex.Message);  
  }  

}



Answer 7:

您也可以使用SQL参数来防止SQL注入

try
{
    MySqlCommand command = connection.CreateCommand();

    command.CommandText = @"INSERT INTO `tb_mitarbeiter` (`Vorname`) VALUES (@tom)";
     command.Parameters.AddWithValue("@tom", tom);
     connection.Open();
     command.ExecuteNonQuery();

     return "Mitarbeiter wurde angelegt";
}
catch (Exception ex)
{
     return ex.Message;
}
finally
{
    command.Dispose();
    command.Close(); 
    connection.Close();
}


文章来源: How I can Insert Data in the MySQL Database?