使用C#执行MySQL的SQL文件

最近的一个项目,需要在初始化时建库及建表,因为建表的SQL语句是从MySQL中导出的,所以在建库之后,需要执行导出的Sql语句实现建表及插入数据。方法如下:

        /// <summary> 
        /// 执行Sql文件 
        /// </summary> 
        /// <param name="varFileName">sql文件</param> 
        /// <param name="Conn">连接字符串</param> 
        /// <returns></returns> 
        private bool ExecuteSqlFile(string varFileName, String Conn)
        {
            using (StreamReader reader = new StreamReader(varFileName, System.Text.Encoding.GetEncoding("utf-8")))
            {
                MySqlCommand command;
                MySqlConnection Connection = new MySqlConnection(Conn);
                Connection.Open();
                try
                {
                    string line = "";
                    string l;
                    while (true)
                    {
                        // 如果line被使用,则设为空
                        if (line.EndsWith(";"))
                            line = "";

                        l = reader.ReadLine();

                        // 如果到了最后一行,则退出循环
                        if (l == null) break;
                        // 去除空格
                        l = l.TrimEnd();
                        // 如果是空行,则跳出循环
                        if (l == "") continue;
                        // 如果是注释,则跳出循环
                        if (l.StartsWith("--")) continue;

                        // 行数加1 
                        line += l;
                        // 如果不是完整的一条语句,则继续读取
                        if (!line.EndsWith(";")) continue;                       
                        if (line.StartsWith("/*!"))
                        {
                            continue;
                        }

                        //执行当前行
                        command = new MySqlCommand(line, Connection);
                        command.ExecuteNonQuery();
                    }
                }
                finally
                {
                    Connection.Close();
                }
            }

            return true; 
        }


C#使用`MySql.Data`来执行SQL文件,通常可以通过`MySqlConnection`和`MySqlCommand`类来实现。首先,确保已经安装了MySQL的.NET连接器(MySql.Data.dll)。然后,按照以下步骤进行操作: 1. 创建一个`MySqlConnection`实例,并设置连接字符串,连接到MySQL数据库。 2. 创建一个`MySqlCommand`实例。 3. 使用`MySqlCommand`的`ExecuteReader`、`ExecuteNonQuery`或`ExecuteScalar`方法执行SQL脚本。 下面是执行SQL文件的一个简单示例: ```csharp using MySql.Data.MySqlClient; public void ExecuteSqlScript(string filePath) { // 设置连接字符串,确保服务器地址、数据库名、用户名和密码正确 string connectionString = "server=localhost;database=mydatabase;user=myusername;password=mypassword;"; // 创建连接实例 using (MySqlConnection connection = new MySqlConnection(connectionString)) { try { // 打开连接 connection.Open(); // 创建命令实例,这里假设SQL文件中包含的是单条SQL语句 MySqlCommand command = new MySqlCommand(File.ReadAllText(filePath), connection); // 执行SQL文件中的SQL语句 int affectedRows = command.ExecuteNonQuery(); // 输出受影响的行数 Console.WriteLine("受影响的行数: " + affectedRows); } catch (Exception ex) { // 异常处理 Console.WriteLine("发生异常: " + ex.Message); } } } ``` 请注意,如果SQL文件中包含多条SQL语句,可能需要对文件内容进行解析或逐条执行,或者使用其他工具(如MySQL的命令行工具)来执行
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值