不附加數據庫 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+ "];"
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(); }
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>");
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文件了。
全站熱搜