c# - 使用 1 个连接 (C#.NET) 插入 MySQL 数据库

标签 c# mysql

我在使用 C# 将多行插入 MySQL 数据库时遇到问题,有以下代码;

//Upload to mysql
             string connStr = "server=server;user=username;database=databasae;port=3306;password=password;";
             MySqlConnection conn = new MySqlConnection(connStr);

             conn.Open();

             foreach (Channel chan in results)
             {
                 // Perform databse operations
                 try
                 {
                     //Create sql statment with parameters
                     string sql = "INSERT INTO channels(ID, Name) VALUES (@id,@name)";
                     MySqlCommand cmd = new MySqlCommand(sql, conn);
                     cmd.Parameters.AddWithValue("@id", chan.ID);
                     cmd.Parameters.AddWithValue("@name", chan.Name);
                     cmd.ExecuteNonQuery();
                     updateStatus("Inserted");

                 }


                 catch (Exception ex)
                 {
                     updateStatus(ex.Message.ToString());
                 }
                 conn.Close();

我似乎得到“连接必须有效且打开”。据我所知,我正在正确传递连接字符串并且我正在使用 ExecuteNonQuery。和想法?

谢谢

最佳答案

conn.Close(); 应该在 foreach 之外。 以下将起作用:

         //Upload to mysql
         string connStr = "server=server;user=username;database=databasae;port=3306;password=password;";
         MySqlConnection conn = new MySqlConnection(connStr);

         conn.Open();

         foreach (Channel chan in results)
         {
             // Perform databse operations
             try
             {
                 //Create sql statment with parameters
                 string sql = "INSERT INTO channels(ID, Name) VALUES (@id,@name)";
                 MySqlCommand cmd = new MySqlCommand(sql, conn);
                 cmd.Parameters.AddWithValue("@id", chan.ID);
                 cmd.Parameters.AddWithValue("@name", chan.Name);
                 cmd.ExecuteNonQuery();
                 updateStatus("Inserted");

             }


             catch (Exception ex)
             {
                 updateStatus(ex.Message.ToString());
             }
          }
          conn.Close();

关于c# - 使用 1 个连接 (C#.NET) 插入 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5934797/

相关文章:

javascript - 通过点击按钮获取一行的id和value

javascript - 如何一次将脚本中的所有表行插入数据库

mysql - 检查MySQL字符集

c# - 我如何使用后面的 C# 代码中的参数调用存储过程

c# - 无法让 SignalR Hub 变量停止丢失值(静态变量不是问题)

c# - 如何将 ReCaptcha 集成到 BlogEngine.net (ASP.net C#) 中?

mysql - 如何使用TRUNCATE语句避免MySql将其写入binlog?

c# - '转换' Dictionary<string,int> 为 List<object>

c# - 无法从 ASP.NET 调用 DLL

mysql - 根据另一个表中的多行搜索一个表