VS Web項目安裝部署(安裝資料庫[執行sql指令碼]並將串連寫入web.config)

來源:互聯網
上載者:User

一、如果網站安裝不需安裝資料庫。
1.開啟已有網站->發布網站->確定。

2.在解決方案中添加->建立項目->其它項目類型->安裝和布署->WEB安裝項目-確定。

3.通過添加檔案把發布的網站中的檔案添加到出來的檔案系統->WEB應用程式檔案夾。也可以把檔案直接拖到裡面,效果一樣。

4.產生WEB安裝項目。簡單打包就完成了。

二、部署帶資料庫(sql server)的web應用程式

1.開啟已有網站->發布網站->確定(得到要發布的內容)。

2.在解決方案中添加->建立項目->其它項目類型->安裝和布署->WEB安裝項目-確定。

3.將要發布的內容添加到安裝項目中(包括table.sql檔案)。

4.選中web安裝項目->使用者介面編輯器,在啟動下:添加對話方塊->文字框(A)->右鍵屬性,

Edit1Label 屬性並鍵入:資料庫名稱:。 Edit1Property 屬性並鍵入 CUSTOMTEXTA1。 Edit1Value 屬性並鍵入:customdb。 Edit2Label 屬性並鍵入:伺服器名:。 Edit2Property 屬性並鍵入 CUSTOMTEXTA2。 Edit2Value 屬性並鍵入:localhostEdit3Label 屬性並鍵入:使用者名稱:。 Edit3Value 屬性並鍵入:sa。 Edit3Property 屬性並鍵入 CUSTOMTEXTA3。 Edit4Label 屬性並鍵入:密碼:。 Edit4Property 屬性並鍵入 CUSTOMTEXTA4。

移動到適當位置。

5.在當前解決方案中添加建立類庫項目(DBInstaller),在項目中添加安裝程式類(類中代碼在下)。

6.添加web安裝項目輸出,選擇DBInstaller。

7.選中web安裝項目->自訂動作編輯器-安裝-添加自訂動作,找到6中添加的檔案,

設定所添加檔案的屬性CustomActionData:/dbname=[EDITA1] /server=[EDITA2] /user=[EDITA3] /pwd=[EDITA4] /targetdir="[TARGETDIR]\"

8.產生。

類中方法代碼:

Code
public override void Install(IDictionary stateSaver)
        {
            base.Install(stateSaver);
            string connStr = string.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", this.Context.Parameters["server"], this.Context.Parameters["user"], this.Context.Parameters["pwd"]);
            ExecuteSql(connStr, "master", "CREATE DATABASE " + this.Context.Parameters["dbname"]);
             
            StringBuilder sb = this.GetSqlFile("table.sql");
            ExecuteSql(connStr, this.Context.Parameters["dbname"], sb.ToString());
 

        }

        // 擷取Sql檔案裡的指令碼
         private StringBuilder GetSqlFile(string pFileName) {
            StringBuilder sqlTemp = new StringBuilder();
            sqlTemp.Append(File.ReadAllText(this.Context.Parameters["targetdir"] + "\\"+ pFileName, System.Text.Encoding.GetEncoding("GB2312")));
            return sqlTemp;
         }

        private void ExecuteSql(string connStr, string DatabaseName, string Sql)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {               
                SqlCommand cmd = new SqlCommand(Sql, conn);

                conn.Open();
                conn.ChangeDatabase(DatabaseName);
                try
                {
                    cmd.ExecuteNonQuery();
                }
                finally
                {
                    conn.Close();
                }
            }

        }

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.