c# - 我需要通过 C# 应用程序在 MySql 的一列/行中添加多个名称

标签 c# mysql

//我没有添加图片的权限 但我的专栏应该是这样的://

伊达克 |安娜夫 |斯佩德雷 |

我需要在“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);
                }
            }
        }

最佳答案

您没有提出具体问题或描述问题,所以我只是猜测您的数据库因您传递的字符串而阻塞。

您的代码存在许多严重问题:

  1. 添加“多个值”是一个非常糟糕的设计,并且违反了 SQL 中最基本的设计规则。只需使用另一个表,其外键指向父表。如果您需要查询特定值、修改特定值或只是对存储的值执行任何操作,那么放置多个值将是一场真正的噩梦。
  2. 通过字符串连接创建 SQL 语句速度很慢,容易出错,并且容易遭受 SQL 注入(inject)攻击。只要输入错误的字符(例如另一个 ')就会将字符串的其余部分转换为 SQL 语句。
  3. 您忘记关闭连接。

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/

相关文章:

c# - c#中的批量查询插入

c# - CodeDomProvider.CreateCompiler() 已过时

c# - Winforms控件定位

mysql - 配置 GlassFish JDBC 连接池以处理 Amazon RDS 多可用区故障转移

PHP mysqli 为带有 out 参数的存储过程准备语句

c# - 如何在 C# 中取消设置变量?

c# - 查询反序列化的 JSON 对象

php - mySQL-PHP : how to prepare queries with variables number of variables

php - 将数据库记录存储到数组中

python - 使用 MySQLdb 的 SQLAlchemy 双正斜杠问题