彩票走势图

如何在ASP.NET中调用.sql文件

转帖|其它|编辑:郝浩|2010-11-17 16:47:45.000|阅读 566 次

概述:最近遇到提出这样的问题“不用附加数据库,什么修改web.config什么的那么麻烦,而是直接运行一个页面,然后根据向导一步一步引导用户安装生成数据库”那么这样做就需要一个创建数据库的语句和创建这些数据库表的语句,还有这些创建数据库视图以及函数的语句。创建数据库语句好办

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

  最近遇到提出这样的问题“不用附加数据库,什么修改web.config什么的那么麻烦,而是直接运行一个页面,然后根据向导一步一步引导用户安装生成数据库”那么这样做就需要一个创建数据库的语句和创建这些数据库表的语句,还有这些创建数据库视图以及函数的语句。创建数据库语句好办

  "IF Not EXISTS (select name from master.dbo.sysdatabases where name = N'" + DataBaseName+ "') CREATE DATABASE " + DataBaseName"Use [" + DataBaseName+ "];"

  在asp.net中的cs文件中像执行sql语句一样执行就行了。那么创建数据库的语句怎么得到呢?一个方法是设计数据库的文件中直接生成,另外一个方法从现有的数据库中获得。选取数据库点击反键如图

   

  然后选择任务的生成脚本

   

  下面弹出来的对话框中的选择笔者相信大家都会,按照自己所需选择,不知道的就不要管了。但是要注意这个页面

   

  首先这里只选择表,因为仅仅是需要表的执行语句。那么可以生成一个.sql文件。笔者这里命名为:CreateTable.sql,那么我们只用在cs文件中读取CreateTable.sql中的字符串即可像sql语句一样执行

  StreamReader strRead = File.OpenText("D:\\CareateTable.sql");

string strContent= strRead .ReadToEnd();

strRead .Close();

SqlConnection con=new SqlConnection();

con="连接数据库字符串";

SqlCommond com=new SqlCommond();

com.Connection=con;

m.CommandTest=strContent;

com.CommandType = CommandType.Text;

con.Open();

try

{

con.ExecuteNonQuery();

}

catch (Exception ex)

{

......

}

finally

{

conn.Close();

}

  那么会发现报错,就是go语句附近有错误。可以利用word替换go成""那么在运行程序就发现数据库表也就创建出来了。

  那么可能会遇到这种情况,数据库包含存储过程,视图,函数等。这就是笔者遇到的情况。那么此时就需要在那个特别的图上全选。然而笔者照上面的做总是会报错,但是在sql里执行就没有报错。最终也终于解决该问题

Process sqlprocess = new Process();

sqlprocess.StartInfo.FileName = "osql.exe";

//U为用户名,P为密码,S为目标服务器的ip,infile为数据库脚本所在的路径

sqlprocess.StartInfo.Arguments = String.Format("-U {0} -P {1} -S {2} -i {3} -d {4}",

"sa", "asd123", "127.0.0.1", "D:\\CreateTable.sql",DataBaseName);

sqlprocess.Start();

//等待程序执行.Sql脚本

sqlprocess.WaitForExit();

sqlprocess.Close();

Response.Write(&quot;<script>alert('Ok.');</script>");

  这样在asp.net中就可以调用.sql文件了。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:博客园

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP