用c#怎么执行一个sql脚本(如:abc.sql),连接的数据库是Oracle.再现等待,谢谢。

解决方案 »

  1.   

    读到string,用command执行
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  2.   

    //---这个是winform程序使用sql server 命令行程序osql.exe的,楼主只需要修改成Oracle相应的命令行即可
    private void execSql()
    {
    System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();
    sqlProcess.StartInfo.FileName = "cmd.exe";
    sqlProcess.StartInfo.Arguments = "/c "+ " echo off echo 执行数据库更新...";
    sqlProcess.StartInfo.FileName = "osql.exe";
    //string a = String.Format(" -U {0} -P {1} -d {2} -i Weblogs.sql",tbUser.Text.Trim(),tbPassword.Text.Trim(),"master",Application.StartupPath+"\\");
    sqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -d master -i Weblogs.sql",tbUser.Text.Trim(),tbPassword.Text.Trim());
    sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
    sqlProcess.Start();
    sqlProcess.WaitForExit() ;//等待执行
    sqlProcess.Close();
    }
      

  3.   

    用一个command,commandtext从sql文件读取。
      

  4.   

    写一个bat文件(例如叫xxx.bat),内容如下:
    sqlplus acars2forwxr/acars2forwxr@acars2 @abc.sql
    exit;在程序里面
    Process.Start("xxx.bat");
      

  5.   

    楼上 的都可以不过 还是建议 用读到string的方法
      

  6.   

    string filepath = "aaa.sql";
    System.IO.StreamReader sr = new System.IO.StreamReader(filepath);
    string sqlstr = sr.ReadToEnd();
    sr.Close();
    System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(sqlstr, sqlConnection);
    Command.Connection.Open();
    Command.ExecuteNonQuery();
    Command.Connection.Close();
      

  7.   

    文件c:/a.sql
    ----------------------
    create table t1(a int)
    insert t1 select 1
    select * from t1
    drop table t1执行sql
    ---------------------
    SET   NOCOUNT   ON
    EXEC   MASTER..XP_CMDSHELL   'OSQL -E -i c:/a.sql'
      

  8.   

    strCmd = "你的SQL脚本";
    strConn = "你的数据库连接";
    SqlCommand cmd = new SqlCommand(strCmd,strConn);
    cmd.ExecuteNonQuery();
      

  9.   

    多谢楼上各位,如果脚本文件里面包括多条SQL语句的话,用上面的方法可以吗?
      

  10.   

    可以的,用";"号分开比较好点。还有在前面加上SET   NOCOUNT   ON;
    后面加上SET   NOCOUNT   OFF;