<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      (噴血分享)利用.NET生成數據庫表的創建腳本,類似SqlServer編寫表的CREATE語句

       

      (噴血分享)利用.NET生成數據庫表的創建腳本,類似SqlServer編寫表的CREATE語句

       

        在我們RDIFramework.NET代碼生成器中,有這樣一個應用,就是通過數據庫表自動生成表的CREATE語句,如下圖所示:

       

        在實現此功能前摸索了很多方法,最后借助MSSQLSERVER自帶的dll文件來完成。先截圖展示下此功能生成后的效果,然后再分享代碼與方法,歡迎大家討論其他可行方式,謝謝。 

        通過上圖可以看到,生成的表CREATE語句與SQLSERVER企業管理器生成的語句完全一樣。現在我們來看一看如何實現。在上面我說過,我采用的是SQLSERVER自帶的dll文件的方法來完成。因此,我們首先要引用MSSQLSERVER的相關dll文件,如我的SQLSERVER安裝在“D:\Program Files\Microsoft SQL Server\”,打開目錄“D:\Program Files\Microsoft SQL Server\100\SDK\Assemblies”,就可以看到SQLSERVER的全部dll文件了,其實通過這些dll文件,我們可以完成像SQLSERVER企業管理器一樣的功能,非常強大,看你怎么使用了,在此僅拋磚引玉。我們需要在我們的項目中添加兩個dll文件的引用,分別為:

      Microsoft.SqlServer.ConnectionInfo.dll

      Microsoft.SqlServer.Management.Sdk.Sfc.dll

      如下圖所示:

         

      引用了上面兩個dll文件后,在我們的項目中添加命名空間: 

      using Microsoft.SqlServer.Management.Common;
      using Microsoft.SqlServer.Management.Smo;
      

      現在,我們就可以使用MSSQLSERVER提供的類庫來生成表的CREATE語句了。

      下面給出創建的全部代碼: 

           private void ScriptOption()
              {
                  scriptOption.ContinueScriptingOnError = true;
                  scriptOption.IncludeIfNotExists = true;
                  scriptOption.NoCollation = true;
                  scriptOption.ScriptDrops = false;
                  scriptOption.ContinueScriptingOnError = true;
                  //scriptOption.DriAllConstraints = true;
                  scriptOption.WithDependencies = false;
                  scriptOption.DriForeignKeys = true;
                  scriptOption.DriPrimaryKey = true;
                  scriptOption.DriDefaults = true;
                  scriptOption.DriChecks = true;
                  scriptOption.DriUniqueKeys = true;
                  scriptOption.Triggers = true;
                  scriptOption.ExtendedProperties = true;
                  scriptOption.NoIdentities = false;
              }
      
              /// <summary>
              /// 生成數據庫類型為SqlServer指定表的DDL
              /// </summary>
              private void GenerateSqlServerDDL()
              {
                  //對于已經生成過的就不用再次生成了,節約資源。
                  if (!string.IsNullOrEmpty(textEditorDDL.Text) && textEditorDDL.Text.Trim().Length > 10)
                  {
                      return;
                  }
      
                  ScriptOption();
                  ServerConnection sqlConnection = null;
                  try
                  {
                      StringBuilder sbOutPut = new StringBuilder();
                      
                      if (dbSet.ConnectStr.ToLower().Contains("integrated security")) //Windows身份驗證
                      {
                          sqlConnection = new ServerConnection(dbSet.Server);
                      }
                      else        //SqlServer身份驗證
                      {
                          string[] linkDataArray = dbSet.ConnectStr.Split(';');
                          string userName = string.Empty;
                          string pwd = string.Empty;
                          foreach (string str in linkDataArray)
                          { 
                              if(str.ToLower().Replace(" ","").Contains("userid="))
                              {
                                  userName = str.Split('=')[1];
                              }
      
                              if (str.ToLower().Replace(" ", "").Contains("password"))
                              {
                                  pwd = str.Split('=')[1];
                              }
                          }
      
                          sqlConnection = new ServerConnection(dbSet.Server,userName,pwd);
                      }
      
                      Server sqlServer = new Server(sqlConnection);
                      Table table = sqlServer.Databases[dbSet.DbName].Tables[txtName.Text];
                      string ids;
                      //編寫表的腳本
                      sbOutPut = new StringBuilder();
                      sbOutPut.AppendLine();
                      sCollection = table.Script(scriptOption);
      
                      foreach (String str in sCollection)
                      {
                          //此處修正smo的bug
                          if (str.Contains("ADD  DEFAULT") && str.Contains("') AND type = 'D'"))
                          {
                              ids = str.Substring(str.IndexOf("OBJECT_ID(N'") + "OBJECT_ID(N'".Length, str.IndexOf("') AND type = 'D'") - str.IndexOf("OBJECT_ID(N'") - "OBJECT_ID(N'".Length);
                              sbOutPut.AppendLine(str.Insert(str.IndexOf("ADD  DEFAULT") + 4, "CONSTRAINT " + ids));
                          }
                          else
                              sbOutPut.AppendLine(str);
      
                          sbOutPut.AppendLine("GO");
                      }
      
                      //生成存儲過程
                      this.textEditorDDL.SetCodeEditorContent("SQL", sbOutPut.ToString());
                      this.textEditorDDL.SaveFileName = this.TableName + ".sql";
                      sbOutPut = new StringBuilder();
                  }
                  catch (Exception ex)
                  {
                      LogHelper.WriteException(ex);
                  }
                  finally
                  {
                      sqlConnection.Disconnect();
                  }
              }  

       

      說明:textEditorDDL為顯示生成表CREATE語句后的控件。

      歡迎討論其他方法,謝謝!

      如果覺得對你有引導與幫助,可以點下推薦,謝謝!

       

      posted @ 2013-07-25 15:30  .NET快速開發框架  閱讀(10388)  評論(49)    收藏  舉報
      主站蜘蛛池模板: 久久国产精品精品国产色婷婷| 成人精品老熟妇一区二区| 99精品视频在线观看婷婷| 精品久久久久久亚洲综合网| 日韩精品久久不卡中文字幕| 精品国产一区二区亚洲人| 国产微拍一区二区三区四区| 又爽又黄又无遮掩的免费视频 | 一本无码av中文出轨人妻| 免费人成在线观看网站| 亚在线观看免费视频入口| 国产精品一久久香蕉产线看| 日韩AV高清在线看片| 亚洲va在线∨a天堂va欧美va| 免费ā片在线观看| 久久综合九色综合久桃花| 中文字幕国产日韩精品| 国产在线精品福利91香蕉| 亚洲av成人区国产精品| 国产精品爽爽va在线观看网站| 日本伊人色综合网| 亚洲精品视频一二三四区| 无码人妻精品一区二区三区下载| 国产精品美女久久久| av色蜜桃一区二区三区| 少妇被粗大的猛烈xx动态图| 国产成人高清亚洲综合| 欧美视频二区欧美影视| 成人午夜在线观看刺激| 97久久久精品综合88久久| 久久精品国产亚洲综合av| 欧美日韩国产图片区一区| 国产精品成人av电影不卡| 国产视频不卡一区二区三区| 精品熟女少妇免费久久| 人妻系列中文字幕精品| 国产午夜亚洲精品福利| 欧美人禽杂交狂配| 亚洲av区一区二区三区| 日韩少妇人妻vs中文字幕| 18禁裸乳无遮挡自慰免费动漫|