//我没有添加图片的权限 但我的专栏应该是这样的://
伊达克 |安娜夫 |斯佩德雷 |
我需要在“spejdere”行中添加几个名称。我不知道是否可能。这是我在“spejdere”中添加一个名称的代码
private void button1_Click(object sender, EventArgs e)
{
{
string constring = "datasource=localhost;port=3306;username=root;password=*****";
string Query = "update database.aktiviteter set spejdere='" + this.spe_txt.Text + "' where idak='" + this.idak_txt2.Text + "' ;";
MySqlConnection conDatabase = new MySqlConnection(constring);
MySqlCommand cmdDatabase = new MySqlCommand(Query, conDatabase);
MySqlDataReader myReader;
try
{
conDatabase.Open();
myReader = cmdDatabase.ExecuteReader();
MessageBox.Show("Spejder er tilknyttet");
while (myReader.Read())
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
最佳答案
您没有提出具体问题或描述问题,所以我只是猜测您的数据库因您传递的字符串而阻塞。
您的代码存在许多严重问题:
- 添加“多个值”是一个非常糟糕的设计,并且违反了 SQL 中最基本的设计规则。只需使用另一个表,其外键指向父表。如果您需要查询特定值、修改特定值或只是对存储的值执行任何操作,那么放置多个值将是一场真正的噩梦。
- 通过字符串连接创建 SQL 语句速度很慢,容易出错,并且容易遭受 SQL 注入(inject)攻击。只要输入错误的字符(例如另一个
'
)就会将字符串的其余部分转换为 SQL 语句。 - 您忘记关闭连接。
Jeff Attwood 有一篇很好的文章,介绍了 Give me parameterized SQL or give me death 中原始查询为何不好的原因。
您可以轻松地将语句转换为参数化查询,如下所示:
string constring = "datasource=localhost;port=3306;username=root;password=*****";
string Query = "update database.aktiviteter set spejdere=@param1 where idak=@param2 ;";
using(var connection= new MySqlConnection(constring))
{
var command= new MySqlCommand(Query, connection);
command.Parameters.AddWithValue("@param1",this.spe_txt.Text);
command.Parameters.AddWithValue("@param2",this.idak_txt2.Text);
connection.Open();
command.ExecuteNonQuery();
}
using
确保当您不再需要连接时关闭并处置连接,即使发生异常也是如此
关于c# - 我需要通过 C# 应用程序在 MySql 的一列/行中添加多个名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20282596/