我有一个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和名字
您应该简单地执行命令
....
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();
做一个插入/更新/删除ü应该添加
connection.Open();
command.ExecuteNonQuery();
对于选择()来显示从数据库中的数据:
connection.Open();
command.ExecuteReader();
你忘了调用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;
}
有几个关键的事情要记住:
- 包装一次性对象与使用。 在的MySqlConnection的情况下,它会正确地关闭和处置的连接时,其超出范围。
- 通过你的查询中值时使用的SQL参数。 这将避免SQL注入和更容易维护。
- 就个人而言,我喜欢有功能的一个出口。 在这个例子中,“stringToReturn”变量保存的值一旦该功能完成既成功地或在故障的情况下执行返回。
你是不是在执行命令使用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();
}
你错过了写这篇文章: -
....
connection.Open();
command.ExecuteNonQuery();
....
{
串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);
}
}
您也可以使用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();
}