开发者社区> 狼人2007> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:   笔者好久没有写随笔了,这次是遇到提出这样的问题“不用附加数据库,什么修改web.config什么的那么麻烦,而是直接运行一个页面,然后根据向导一步一步引导用户安装生成数据库”那么这样做就需要一个创建数据库的语句和创建这些数据库表的语句,还有这些创建数据库视图以及函数的语句。
+关注继续查看

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


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

  在asp.net中的cs文件中像执行sql语句一样执行就行了。

  那么创建数据库的语句怎么得到呢?一个方法是设计数据库的文件中直接生成,另外一个方法从现有的数据库中获得。选取数据库点击反键如图

1

  然后选择任务的生成脚本

1

   然后选择任务的生成脚本

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

1

  首先这里只选择表,因为仅仅是需要表的执行语句。那么可以生成一个.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文件了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
sqlServer存储过程
1、创建存储过程报错:     'CREATE/ALTER PROCEDURE' 必须是查询批次中的第一个语句。 解决方法: use databaseName 后面要加上一句: GO ...
536 0
SQL Server基础之<存储过程>
原文:SQL Server基础之   简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件,但是其作用不仅限于批处理。本篇主要介绍变量的使用,存储过程和存储函数的创建,调用,查看,修改以及删除操作。
1087 0
如何获得SQL Server索引使用情况
原文: 如何获得SQL Server索引使用情况 原文出自: http://www.mssqltips.com/sqlservertip/1239/how-to-get-index-usage-information-in-sql-server/   问题: 数据库有两大存储需要:数据页和索引页。
647 0
SQL Server 2008性能故障排查(四)——TempDB
原文: SQL Server 2008性能故障排查(四)——TempDB 接着上一章:I/O TempDB:          TempDB是一个全局数据库,存储内部和用户对象还有零食表、对象、在SQLServer操作过程中产生的存储过程等数据。
1108 0
SQLSERVER存储过程语法详解
SQL SERVER存储过程语法: Create PROC [ EDURE ] procedure_name [ ; number ]     [ { @parameter data_type }         [ VARYING ] [ = default ] [ OUTPUT ]     ] [ ,...n ]   [ WITH     { RECOMPILE | ENCRY
986 0
+关注
狼人2007
个人对技术的追求:代码少而精捍;思路清晰美观;可扩展好维护;技术驱动商业; 人生格言:只要你有信念,有追求,并且坚持,那你一定比随波逐流,行得远行得正...
文章
问答
文章排行榜
最热
最新
相关电子书
更多
SQL Server在电子商务中的应用与实践
立即下载
SQL Sever迁移PG经验
立即下载
微信SQLite数据库损坏恢复实践
立即下载