C#_ 項目打包附加資料庫

來源:互聯網
上載者:User

標籤:blog   http   使用   os   io   strong   檔案   資料   

C#_ 項目打包附加資料庫  

2010-07-11 23:22:45|  分類: Winfrom|舉報|字型大小 訂閱

  

實現效果:安裝項目時直接附加資料庫。

1.首先在需要部 署的項目的方案總管中建立一個安裝項目

 

2.在安裝項目的 檔案視圖中,右鍵【應用程式檔案夾】->【添加】->【項目輸出】

 

選擇你的項目中的啟動項目,下面的列表中,預設就是主輸出,確定。

3.此時在檔案系 統的中間欄目,會自動列出編譯所需的檔案。一個簡單項目打包差不多,還有捷徑什麼的,就不說了。開始重點了。

建立安裝程式類

4.在解決方案資 來源管理員中,建立一個類庫項目【InstallDB】,刪除Class1.cs,建立一個安裝程式類 [InstallDB.cs],等下將在這個類中編寫附加資料庫代碼。

 

建立自訂安裝對話方塊

5.在剛建立的安 裝項目上右鍵,【視圖】->【使用者介面】:

在使用者介面中,右鍵【啟動】-【添加對話方塊】-選擇【文字框(A)】-確定。

6.然後右鍵這個 文字框(A),將其上移歡迎使用下面:

右鍵選擇【屬性】,參考的資訊填寫:


7.在剛 建立的安裝項目上右鍵,【視圖】->【自訂動作】:

8.右鍵【自訂 操作介面】的【安裝】節點,【添加自訂動作】,彈出的對話方塊。

9.查 找範圍裡選擇應用程式檔案夾,再點擊右側的【添加輸出(O)…】,選擇剛建立的安 裝程式類項目,預設還是主輸出,確定。此時:

10.右鍵這個 【主輸出來自InstallDB(活動)】,進入屬性介面,在【CustomActionData】屬性裡輸入下面的內容:

/dbname=[DBNAME] /server=[SERVER] /user=[USER] /pwd=[PWD] /targetdir="[TARGETDIR]\"

說明:其中前四個方括弧中的大寫字母,為上面第6步圖中輸入的四個EditProPerty屬性,需要對應好。 最後一個targetdir的值的意思是安裝後檔案的目錄路徑。

特別提醒:前三個"/XXX=[XXX]"後面  ,都有一個空格的,小xin曾因此煩惱甚久,網上的某些教程實在是。。。很耐人。

11.現在可以添 加資料庫檔案了,在剛建立的安裝項目上右鍵,【添加】->【檔案】,選擇你的MDF和LDF檔案,就是安裝時需要附加的資料庫檔案。

12.最後,我們 只需在安裝程式類裡編寫附加資料庫的代碼了。開啟上面第4步中建立的安裝程式類,參考下方的代碼,編寫適合您的附加資料庫代碼:

 

/// <summary>
/// 附加資料庫方法
/// </summary>
/// <param name="strSql">串連資料庫字串,串連master系統資料庫</param>
/// <param name="DataName">資料庫名字</param>
/// <param name="strMdf">資料庫檔案MDF的路徑</param>
/// <param name="strLdf">資料庫檔案LDF的路徑</param>
/// <param name="path">安裝目錄</param>
private void CreateDataBase( string strSql, string DataName, string strMdf, string strLdf, string path)
{
SqlConnection myConn = new SqlConnection(strSql);
String str = null ;
try
{
str = " EXEC sp_attach_db @dbname=‘"+DataName+"‘,@filename1=‘"+strMdf+"‘,@filename2=‘"+strLdf+"‘";
SqlCommand myCommand = new SqlCommand(str, myConn);
myConn.Open();
myCommand.ExecuteNonQuery();
MessageBox.Show("資料庫安裝成功!點擊確定繼續");//需Using System.Windows.Forms
}
catch(Exception e)
{
MessageBox.Show("資料庫安裝失敗!" + e.Message+"\n\n"+"您可以手動附加資料");
System.Diagnostics.Process.Start(path);//開啟安裝目錄
}
finally
{
myConn.Close();
}
}
public override void Install(System.Collections.IDictionary stateSaver)
{
string server = this.Context.Parameters["server"];//伺服器名稱
string uid = this.Context.Parameters["user"];//SQlServer使用者名稱
string pwd = this.Context.Parameters["pwd"];//密碼
string path = this.Context.Parameters["targetdir"];//安裝目錄
string strSql = "server=" + server + ";uid=" + uid + ";pwd=" + pwd + ";database=master";//串連資料庫字串
string DataName = "JXC";//資料庫名
string strMdf = path + @"JXC.mdf";//MDF檔案路徑,這裡需注意檔案名稱要與剛添加的資料庫檔案名一樣!
string strLdf = path + @"jxc_log.ldf";//LDF檔案路徑
base.Install(stateSaver);
this.CreateDataBase(strSql, DataName, strMdf, strLdf, path);//開始建立資料庫
}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.