一起谈.NET技术,ASP.NET调用.sql文件

  笔者好久没有写随笔了,这次是遇到提出这样的问题“不用附加数据库,什么修改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;
com.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("<script>alert('Ok.');</script>");

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

时间: 2024-08-01 14:33:03

一起谈.NET技术,ASP.NET调用.sql文件的相关文章

一起谈.NET技术,ASP.NET调用.sql文件(二)

笔者前一阵子发表了一篇<ASP.NET调用.sql文件>文章,主要是是解决数据库配置,减去传统手工附加数据库和自己改写web.config文件等等这些复杂的过程,而是配置的向导.其中给出关键的技术知识点,就是通过sql数据库生成数据库脚本即.sql文件,然后通过调用osql.exe来执行.sql文件. 这里,园友首先质疑了其安全性,认为程序存在被他人利用的危险.笔者对这方面没有太多经验,希望来位高人讲讲这方面的知识或者演示被利用的过程.所以这块还是一个未知的领域,笔者也不敢保证绝对安全,但是至

ASP.NET调用.sql文件(二)

笔者前一阵子发表了一篇<ASP.NET调用.sql文件>文章,主要是是解决数据库配置,减去传统手工附加数据库和自己改写web.config文件等等这些复杂的过程,而是配置的向导.其中给出关键的技术知识点,就是通过sql数据库生成数据库脚本即.sql文件,然后通过调用osql.exe来执行.sql文件. 这里,园友首先质疑了其安全性,认为程序存在被他人利用的危险.笔者对这方面没有太多经验,希望来位高人讲讲这方面的知识或者演示被利用的过程.所以这块还是一个未知的领域,笔者也不敢保证绝对安全,但是至

ASP.NET调用.sql文件(二“.NET研究”)

笔者前一阵子发表了一篇<ASP.NET调用.sql文件>文章,主要是是解决数据库配置,减去传统手工附加数据库和自己改写web.config文件等等这些复杂的过程,而是配置的向导.其中给出关键的技术知识点,就是通过sql数据库生成数据库脚本即.sql文件,然后通过调用osql.exe来执行.sql文件. 这里,园友首先质疑了其安全性,认为程序存在被他人利用的危险.笔者对这方面没有太多经验,希望来位高人讲讲这方面的知识或者演示被利用的过程.所以这块还是一个未知的领域,笔者也不敢保证绝对安全,但是至

一起谈.NET技术,不附加数据库 ASP.NET调用.sql文件

笔者好久没有写随笔了,这次是遇到提出这样的问题"不用附加数据库,什么修改web.config什么的那么麻烦,而是直接运行一个页面,然后根据向导一步一步引导用户安装生成数据库"那么这样做就需要一个创建数据库的语句和创建这些数据库表的语句,还有这些创建数据库视图以及函数的语句.创建数据库语句好办, "IF Not EXISTS (select name from master.dbo.sysdatabases where name = N'" + DataBaseNam

ASP.NET调用.sql文件

笔者好久没有写随笔了,这次是遇到提出这样的问题"不用附加数据库,什么修改web.config什么的那么麻烦,而是直接运行一个页面,然后根据向导一步一步引导用户安装生成数据库"那么这样做就需要一个创建数据库的语句和创建这些数据库表的语句,还有这些创建数据库视图以及函数的语句.创建数据库语句好办. "IF Not EXISTS (select name from master.dbo.sysdatabases where name = N'" + DataBaseNam

在asp中调用sql server的存储过程

在asp中调用sql server的存储过程可以加快程序运行速度,所以这些天在研究asp中利用sql server的存储过程,现总结如下,其中很多思想也是直接从chinaasp论坛中得出来,希望能给大家一些帮助.1.调用存储过程的一般方法先假设在sql server中有一存储过程dt_users:CREATE PROCEDURE [dbo].[dt_users] ASselect * from usersreturnGO第一种方法是不利用command对象,直接用recordset对象set r

一起谈.NET技术,JavaScript 调用 ASP.NET WebService 的简单方法

客户端 JavaScript 调用 ASP.NET WebService 的方法除了采用 WebServer.htc 和构造 SOAPAction 的方法外,下面介绍一个采用 Ajax调用的简单方法,并且可以传递参数.其实,ASP.NET WebService 就是一个网站,所以,Request 对象是可用的,这样,传递参数就很容易了.下面是一个WebService1.asmx的代码: ASMX 代码: <%@ WebService Language="C#" CodeBehin

一起谈.NET技术,LINQ to SQL快速上手 step by step

前言       最近接连遇到几个朋友问我同一个问题,就是关于.NET平台上ORM框架的选择.我想在这个讲求效率的时代,谁也不想手写SQL或存储过程去访问数据库了.大家都知道,在Java平台上,ORM这一块基本是Hibernate的天下.当然,相对轻量级的iBatis也有不错的表现.      不过谈到.NET平台,ORM框架似乎相对混乱了点.很多朋友问我的时候,往往会这样问:NHibernate.NBear和Castle该选择哪个?而当我反问:为什么不适用微软自带的Linq to Sql呢?对

一起谈.NET技术,异步调用与多线程的区别

随着拥有多个硬线程CPU(超线程.双核)的普及,多线程和异步操作等并发程序设计方法也受到了更多的关注和讨论.本文主要是想探讨一下如何使用并发来最大化程序的性能. 多线程和异步操作的异同 多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性.甚至有些时候我们就认为多线程和异步操作是等同的概念.但是,多线程和异步操作还是有一些区别的.而这些区别造成了使用多线程和异步操作的时机的区别. 异步操作的本质 所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们