现在我要做一个程序,在选择指定的SQL Server服务器,并用指定用户登录后,实现创建数据库。数据库脚本已经以文件的形式存放。问题是如何在C#中执行指定的SQL 脚本文件,实现自完成创建数据库?

解决方案 »

  1.   

    private void  execfile()
        {
    try 

    string connStr = "data source={0};user id={1};password={2};persist security info=false;packet size=4096"; 
    ExecuteSql(connStr, "master", "CREATE DATABASE " + "数据库名");   //这个数据库名是指你要新建的数据库名称 下同
    System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process(); 
    sqlProcess.StartInfo.FileName = "osql.exe "; 
    sqlProcess.StartInfo.Arguments = " -U 数据库用户名 -P 密码 -d 数据库名 -i 存放sql文本的目录sql.sql"; 
    sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
    sqlProcess.Start(); 
    sqlProcess.WaitForExit(); 
    sqlProcess.Close(); 

    catch (Exception ex) 

    throw ex; 

    }


    private void ExecuteSql(string conn, string DatabaseName, string Sql) 

    System.Data.SqlClient.SqlConnection mySqlConnection = new System.Data.SqlClient.SqlConnection(conn); 
    System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql, mySqlConnection); 
    Command.Connection.Open(); 
    Command.Connection.ChangeDatabase(DatabaseName); 
    try 

    Command.ExecuteNonQuery(); 

    finally 

    Command.Connection.Close(); 

    }
      

  2.   

    或者直接执行create database....脚本也是可以的。
      

  3.   

    哪位知道CommunityServer中是怎么实现的?
      

  4.   

    好像不行哦,有问题的,我也不知道是怎么回事,
    有没有例子发一个看看呀
    我的QQ20818468
    X
      

  5.   

    http://www.5ivb.net/Info/86/Info30712/
      

  6.   

    CommunityServer也是通过执行脚本创建数据库,你可以看一下他的源码.
      

  7.   

    if (version == "2000")
                    {
                        newProcess.StartInfo.FileName = "osql.exe";
                        if (user == "" && password == "")
                            newProcess.StartInfo.Arguments = "-S " + server + " -E -d " + databasename + " -i " + NewPath;
                        else
                            newProcess.StartInfo.Arguments = "-U " + user + " -P " + password + " -S " + server + " -d " + databasename + " -i " + NewPath;
                    }
                    if (version == "2005")
                    {
                        newProcess.StartInfo.FileName = "sqlcmd.exe";
                        if (user == "" && password == "")
                            newProcess.StartInfo.Arguments = "-S " + server + " -d " + databasename + " -i " + NewPath;
                        else
                            newProcess.StartInfo.Arguments = "-U " + user + " -P " + password + " -S " + server + " -d " + databasename + " -i " + NewPath;
                    }
                    newProcess.Start();
                    newProcess.WaitForExit();