当前位置:编程学习 > C#/ASP.NET >>

asp.net中点击按键在后台代码中 如何执行.sql文件

在asp.net 中 如何写代码 才可以执行 .sql 文件  
我要在网站配置后才执行网站 要先创建数据库,  
就是说 谁有 在asp.net  中调用文件夹下的 .sql 文件 --------------------编程问答-------------------- 参考
http://www.cnblogs.com/yiki/archive/2007/03/16/676945.html
http://imay.blog.bokee.net/bloggermodule/blog_viewblog.do?id=996407 --------------------编程问答-------------------- 建立安装部署项目,在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();

--------------------编程问答--------------------

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");
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,