在asp.net 中 如何写代码 才可以执行 .sql 文件  
我要在网站配置后才执行网站 要先创建数据库,  
就是说 谁有 在asp.net  中调用文件夹下的 .sql 文件

解决方案 »

  1.   

    参考
    http://www.cnblogs.com/yiki/archive/2007/03/16/676945.html
    http://imay.blog.bokee.net/bloggermodule/blog_viewblog.do?id=996407
      

  2.   

    建立安装部署项目,在install安装类通过DirectoryEntry 操作IIS实现网站或虚拟目录的配置。
    通过执行SQL脚本配置数据库
    use master exec sp_attach_db @dbname=N'数据库名 ',@filename1=N'数据库文件地址',@filename2=N'日志文件地址'

    private void ExecuteSql(string connString,string DatabaseName,string sql)
    {
    using(SqlConnection conn=new SqlConnection(connString))
    {
    SqlCommand cmd=new SqlCommand(sql,conn);
    conn.Open();
    cmd.Connection.ChangeDatabase(DatabaseName);
    cmd.ExecuteNonQuery();
    conn.Close();
    }
    }
    string connString=string.Format("server={0};user id={1};password={2}",this.Context.Parameters["server"],this.Context.Parameters["user"],this.Context.Parameters["pwd"]);//根据输入的数据库名称建立数据库
    ExecuteSql(connString,"master","create database "+this.Context.Parameters["dbname"]);//调用osql执行脚本
    string cmd=string.Format(" -S{0} -U{1} -P{2} -d{3} -i{4}db.sql",this.Context.Parameters["server"],this.Context.Parameters["user"],this.Context.Parameters["pwd"],this.Context.Parameters["dbname"],this.Context.Parameters["targetdir"]);
    System.Diagnostics.Process sqlProcess=new Process();
    sqlProcess.StartInfo.FileName="osql.exe";
    sqlProcess.StartInfo.Arguments=cmd;
    sqlProcess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
    sqlProcess.Start();
    sqlProcess.WaitForExit();//等待执行
    sqlProcess.Close();
      

  3.   


    using System; 
    using System.Xml; 
    using System.Data; 
    using System.IO; 
    using System.Collections; 
    using System.Data.SqlClient; namespace ExecuteSqlFile 

    /// <summary> 
    /// DBAccess 的摘要说明。 
    /// </summary> 
    public class DBAccess 

    public DBAccess() 

    } #region 属性 private static string ConStr = ""; private static string ConString 

    get 

    if(ConStr == "") 

    try 

    XmlDocument doc = new XmlDocument(); 
    doc.Load("ServerConfig.xml"); string userid = doc.SelectSingleNode("ServerConfig/UserId").InnerText; 
    string password = doc.SelectSingleNode("ServerConfig/PassWord").InnerText; 
    string servername = doc.SelectSingleNode("ServerConfig/ServerName").InnerText; 
    string database = doc.SelectSingleNode("ServerConfig/DataBase").InnerText; 
    ConStr = "server = " + servername + ";uid = " 
    + userid + ";pwd = " + password + ";database = " + database; 

    catch(Exception ex) 

    throw ex; 

    } return ConStr; 

    } private static SqlConnection Con; 
    public static SqlConnection MyConnection 

    get 

    if(Con == null) 

    Con = new SqlConnection(ConString); 

    return Con; 

    } #endregion 
    /// <summary> 
    /// 执行Sql文件 
    /// </summary> 
    /// <param name="varFileName"></param> 
    /// <returns></returns> 
    public static bool ExecuteSqlFile(string varFileName) 

    if(!File.Exists(varFileName)) 

    return false; 
    } StreamReader sr = File.OpenText(varFileName); ArrayList alSql = new ArrayList(); string commandText = ""; string varLine = ""; while(sr.Peek() > -1) 

    varLine = sr.ReadLine(); 
    if(varLine == "") 

    continue; 

    if(varLine != "GO") 

    commandText += varLine; 
    commandText += "\r\n"; 

    else 

    alSql.Add(commandText); 
    commandText = ""; 

    } sr.Close(); try 

    ExecuteCommand(alSql); 

    catch 

    return false; 
    } return true; 

    private static void ExecuteCommand(ArrayList varSqlList) 

    MyConnection.Open(); 
    SqlTransaction varTrans = MyConnection.BeginTransaction(); SqlCommand command = new SqlCommand(); 
    command.Connection = MyConnection; 
    command.Transaction = varTrans; try 

    foreach(string varcommandText in varSqlList) 

    command.CommandText = varcommandText; 
    command.ExecuteNonQuery(); 

    varTrans.Commit(); 

    catch(Exception ex) 

    varTrans.Rollback(); 
    throw ex; 

    finally 

    MyConnection.Close(); 



    } 配置文件如下: 
    <?xml version="1.0" encoding="utf-8" ?> 
    <ServerConfig> 
    <ServerName>localhost</ServerName> 
    <DataBase>tttttt</DataBase> 
    <UserId>sa</UserId> 
    <PassWord>sa</PassWord> 
    </ServerConfig> 
    保存为ServerConfig.xml 
    放到Bin/Debug/里面 
    调用如下: 
    DBAccess.ExecuteSqlFile(@"E:\My Document\MySql\test1.sql");