C# 执行.SQL文件

先要添加sqldmo COM组件       COM 引用 "Microsoft  SQLDMO Object Library"

            SQLDMO.SQLServer2 sqlserver = new SQLDMO.SQLServer2Class();
            sqlserver.Connect("192.168.100.240", "sa", "1234");
            SQLDMO.Databases mydbs = sqlserver.Databases;
            SQLDMO.Database mydb = new SQLDMO.DatabaseClass();
            mydb = (SQLDMO.Database)mydbs.Item("master", "sa");
            System.IO.StreamReader s = new System.IO.StreamReader(this.textBox1.Text);
            string sql = s.ReadToEnd();
            mydb.ExecuteImmediate(sql, SQLDMO.SQLDMO_EXEC_TYPE.SQLDMOExec_Default, sql.Length);

 

如果是建立数据库:见如下代码

SqlConnection conn=new SqlConnection("server=(local);user=sa;pwd=;database=master");
SqlCommand cmd=new SqlCommand("CREATE DATABASE [我的数据库] COLLATE Chinese_PRC_CI_AS;",conn);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();

 

下面也可以执行SQL文件,但不能执行有go的sql文件,问题出在哪里还没搞清楚,如果哪位大哥看出问题,指点一下

        #region  這段代碼只能執行<沒有GO的.SQL文件>
        private string GetSql(string Name)
        {
            try
            {
                Assembly Asm = Assembly.GetExecutingAssembly();
                Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name);
                StreamReader reader = new StreamReader(strm);
                return reader.ReadToEnd();
            }
            catch (Exception ex)
            {
                Console.Write("In GetSql:" + ex.Message);
                throw ex;
            }
        }
        private void ExecuteSql(string DataBaseName, string Sql)
        {
            System.Data.SqlClient.SqlConnection conn=new System.Data.SqlClient.SqlConnection ("Password=1234;Persist Security Info=True;User ID=sa;Initial Catalog=master;Data Source=192.168.100.240");
            System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql,conn);

            Command.Connection.Open();
            Command.Connection.ChangeDatabase(DataBaseName);
            try
            {
                Command.ExecuteNonQuery();
            }
            finally
            {
                Command.Connection.Close();
            }
        }

 

        ///   <summary>  
        ///   分析msSqlServer文件*.sql  
        ///   </summary>  
        ///   <param   name="m_SqlFilePath">文件路径</param>  
        ///   <returns></returns>  
        private string GetExcuteSql(string m_SqlFilePath)
        {
            string m_ReturnStr = "";
            StreamReader sr = File.OpenText(m_SqlFilePath);
            //string s = sr.ReadLine();
            string sa = sr.ReadToEnd();
            StringBuilder sb = new StringBuilder();
            //while (s != null)
            //{

            //    if (s.Replace("   ", "") == "GO")
            //        sb.Append(";");
            //    else
            //        sb.Append(s+"  ");
            //    s = sr.ReadLine();
            //}
            m_ReturnStr = sb.ToString();
            sr.Close();
            //return m_ReturnStr;
            return sa;
        }
        #endregion

        private void Button1_Click(object sender, EventArgs e)
        {
          //ExecuteSql(strDBName, GetSql("sql.txt"));
          //ExecuteSql("master", GetSql(this.textBox1.Text));
          //ExecuteSql("master", GetExcuteSql(this.textBox1.Text));
            this.ExecSqlFile();
        }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值