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

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

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

      2001年4月份,我在博客中發過一個小工具,它是一個用ASP.NET寫的SQL SERVER的輔助小工具。 在這期間,有些人貌似對那個工具比較有興趣,所以我常能收到索要源代碼的郵件。 正好,我上月又發布了我的MVC框架,因此打算用【我的ASP.NET MVC框架】來重寫這個工具, 并開源。

      工具的特點:
      1. 采用ASP.NET編寫,并借助MyMVC框架
      2. 為了更好地接近桌面程序的操作體驗,網站采用純AJAX的方式實現。
      3. 界面使用了 JQuery Easy UI
      4. 代碼的語法著色使用了 syntaxhighlighter (JavaScript類庫)

      工具的定位:只是輔助工具,因此功能有限,但要將有限的功能做得盡量好。

      下面將分別介紹工具所能完成的功能,以及關鍵的實現代碼。
      說明:工具的所有源代碼可以在本文的結尾處下載。

      項目介紹

      整個工具的源代碼結構如下:

      項目由Visual Studio 2008創建,包含三個部分:

      1. WebApp:一個ASP.NET網站,它是工具的可運行部分。
         網站只包含一些HTML, CSS, JavaScript,DLL文件。

      2. MyMvcEx:一個類庫項目,它提供了MyMVC框架的二個IActionResult接口的實現類,
         用于向瀏覽器客戶端輸出DataTable, DataSet

      3. SqlServerSmallToolLib:運行網站所需的所有后臺代碼,
         包括:Controller,BLL類,等等。

      MyMVC框架發揮的作用

      從前面的項目介紹中,我們可以看到,整個網站沒有一個ASPX文件,只有HTML文件,
      所有對服務器的調用全由AJAX來實現,比如:下面的【比較數據庫】的代碼片段:

      $.ajax({
          cache: false, dataType: "json", type: "GET",
          url: '/AjaxService/CompareDB.cspx',
          data:{  srcConnId: $("#hfSrcConnId").val(), 
                  destConnId: $("#hfDestConnId").val(), 
                  srcDB: $("#cboSrcDB").combobox("getValue"), 
                  destDB: $("#cboDestDB").combobox("getValue") ,
                  flag: flag
          },
      

      在服務端,我只要實現這樣一個C#方法就可以響應客戶端的請求了:

      [Action]
      public object CompareDB(string srcConnId, string destConnId, string srcDB, string destDB, string flag)
      {
          var result = CompareDBHelper.CompareDB(srcConnId, destConnId, srcDB, destDB, flag);
          return new JsonResult(result);
      }
      

      至于說:JS發起的請求是如何調用到這個C#方法的,以及這個C#方法在調用時的參數和返回值的處理,全由MyMVC框架來實現。
      對于開發AJAX來說,可以不用關心這個問題,只要寫出一個C#方法給JS調用就可以了。

      引用MyMVC是件很簡單的事情,只需要在web.config中做如下的配置即可:

      <httpHandlers>
          <add path="*.cspx" verb="*" type="MyMVC.AjaxHandlerFactory, MyMVC" validate="true" />
      </httpHandlers>
      

      再補充一點:如果不喜歡看到Action方法包含較多的輸入參數,也可以使用下面的方法:

      public class CompareDbOption
      {
          public string SrcConnId;
          public string DestConnId;
          public string SrcDb;
          public string DestDb;
          public string Flag;
      }
      
      
      [Action]
      public object CompareDB(CompareDbOption option)
      {
          var result = CompareDBHelper.CompareDB(option.SrcConnId, option.DestConnId, 
                                                  option.SrcDb, option.DestDb, option.Flag);
          return new JsonResult(result);
      }
      

      如果您喜歡在瀏覽器的客戶端中使用jquery以及jquery.form.js插件,
      您會發現在服務端再借助MyMVC框架來實現AJAX實在是太方便了。
      再來一個添加連接的代碼片段:

      Html表單代碼:

      JavaScript提交表單代碼:

      function SubmitConnectionForm(){
          if( ValidateForm() == false ) return false;
          $("#formConnection").ajaxSubmit({
              success: function(responseText, statusText) {            
                  if (responseText == "update OK" ){
                      $('#divConnectionDialog').dialog('close');
                      // 省略后面的代碼。
      

      服務端C#代碼:

      [Action]
      public string SubmitConnectionInfo(ConnectionInfo info)
      {
          if( string.IsNullOrEmpty(info.ServerIP) )
              throw new MyMessageException("ServerIP is empty.");
      
          if( info.SSPI == false && string.IsNullOrEmpty(info.UserName) )
              throw new MyMessageException("UserName is empty.");
      
          bool isAdd = string.IsNullOrEmpty(info.ConnectionId);
      
          if( isAdd ) {
              info.ConnectionId = Guid.NewGuid().ToString();
              ConnectionManager.AddConnection(info);
              return info.ConnectionId;
          }
          else {
              ConnectionManager.UpdateConnection(info);
              return "update OK";
          }
      }
      
      
      public sealed class ConnectionInfo
      {
          public string ConnectionId;
          public string ServerIP;
          public string UserName;
          public string Password;
          public bool SSPI;
          public int Priority;
      }
      

      在整個工具的開發過程中,由于使用了MyMVC框架以及JQuery,AJAX的實現簡直是太容易了。

      MyMVC框架的下載地址:http://www.rzrgm.cn/fish-li/archive/2012/02/21/2361982.html

      工具主界面

      工具啟動后,將能看到下面的主界面:

      主界面的左邊的【工具列表】中包含二個獨立的功能模塊。
      右邊的上方區域是所有的數據庫連接的列表。
      建議在初次使用時,將自己所需要訪問的SQL SERVER連接參數配置好。

      這個工具可以管理多個連接,而且會根據連接的使用頻率來排序,以方便操作。
      如果需要創建一個連接,可以點擊工具欄中的【新增連接】按鍵,將出現以下對話框。

      工具可以支持二種連接方式:1. Windows信任連接,2. 用戶名/密碼連接。

      數據庫連接列表的部分網頁代碼:

      連接采用XML文件來保存,相關的操作代碼:

      服務端的Action實現代碼:

      Database 瀏覽器

      在主界面的【數據庫連接列表】中,選擇一個連接,然后點擊工具欄上的【打開連接】按鍵,即可進入【Database 瀏覽器】界面。

      在這個工具中,如果需要查看某個數據庫對象的定義,只需要點擊相應的對象節點就可以了:

      為了操作方便,工具提供多標簽查看功能:

      獲取數據庫對象列表的關鍵代碼:

      查看數據庫對象的定義腳本的實現代碼:

      搜索數據庫

      您可以在上圖所示界面的左邊樹控件中,選擇一個節點,右擊,然后選擇“在數據庫中搜索”,此時會出現如下對話框:

      在上圖的對話框中,點擊確定按鍵后,可出現下面的查找結果:
      說明:匹配行就會高亮顯示。

      搜索數據庫對象的相關代碼:

      復制存儲過程工具

      為了演示這個功能,先需要創建一個數據庫。我創建了一個數據庫:TestMyTool,它沒有任何數據庫對象,如下圖

      然后,從主界面中啟動【復制存儲過程工具】,
      接著選擇:數據庫連接,數據庫對象
      點擊【刷新列表】按鍵,將看到以下結果:

      我們可以選擇要復制的(存儲過程,視圖,自定義函數)對象:

      最后點擊【開始復制】按鍵,即可完成復制過程。
      此時數據庫TestMyTool的顯示結果為:

      此功能的核心部分實現代碼:

      數據庫比較工具

      為了方便后面的介紹,我將復制全部的存儲過程到TestMyTool,這個過程將省略貼圖。
      不僅如此,我還對其中的一個存儲過程做了一點修改。

      然后,在程序主界面中,啟動【數據庫比較工具】,
      接著選擇:數據庫連接,數據庫對象
      點擊【開始比較數據庫】按鈕后,將能看到以下比較結果。
      每個數據庫對象的定義中,第一個不匹配的行將以高亮行顯示。

      為了能讓您知道不匹配行的出現位置,工具還會顯示不匹配行的前后5行代碼。

      此功能的核心部分實現代碼:

      查看表結構定義

      工具可以讓您輕松地查看一個表結構的定義:

      也可以一次查看多個表的定義:

      還可一下子得到整個數據庫的所有對象的創建腳本:

      此功能的核心部分實現代碼:

      修改運行環境

      到目前為止,這個工具還只能在Visual Studio中運行,顯然它與我們經常見到的【工具】有較大的差別。

      如果您希望可以方便地運行這個工具,那么可以安裝我的另一個小工具來快速地啟動當前這個工具, 那個工具的下載地址:【ASP.NET程序也能像WinForm程序一樣運行】

      然后,就可以在Windows資源管理器中啟動這個小工具:

      現在是不是很像一個桌面程序了?

      您甚至也可以創建一個開始菜單項,或者一個快捷方式來啟動這個小工具, 具體方法可參考博客:【ASP.NET程序也能像WinForm程序一樣運行】

      關于此工具的補充說明

      這個小工具只實現了一些簡單的功能,而且主要集中在查看數據庫的定義這塊。
      這個工具的早期版本中,有些人提到了要求實現查看數據表的功能。
      在今天的版本中,我并沒有實現,但我提供了實現這個功能所必要的一些基礎代碼。
      例如,我提供了二個ActionResult (注意:前面小節的Action代碼中,就使用了下面的二個實現類):

      為了方便地在客戶端將表格顯示地漂亮些,我還提供了一個JS函數:

      function SetGridViewColor(){
          $("table.myGridVew").each(function(){
              $(this).removeClass("myGridVew").addClass("GridView")
                  .find(">thead>tr").addClass("GridView_HeaderStyle").end()
                  .find(">tbody>tr")
                  .filter(':odd').addClass("GridView_AlternatingRowStyle").end()
                  .filter(':even').addClass("GridView_RowStyle");
          });
      }
      
      

      如果您認為很有必要在這個工具中集成數據表的查看(或者查詢數據)的功能,那么可以自行實現(工具是開源的)。
      友情提示:使用上面的代碼以及MyMVC框架,實現一個簡單的查看數據是會比較容易的。

      今天就寫到這里,希望大家能喜歡這個小工具,以及 MyMVC框架

      點擊此處下載全部代碼

      posted on 2012-03-04 21:24  Fish Li  閱讀(20542)  評論(71)    收藏  舉報
      主站蜘蛛池模板: 亚洲无av中文字幕在线| 动漫AV纯肉无码AV电影网| 四虎影视库国产精品一区| 亚洲天堂av日韩精品| 艳妇臀荡乳欲伦69调教视频| 国产美女直播亚洲一区色| 国产在线一区二区不卡| 中文无码热在线视频| 麻豆一区二区中文字幕| 亚洲综合精品香蕉久久网| 久久99九九精品久久久久蜜桃| 免费看欧美日韩一区二区三区 | 韩国 日本 亚洲 国产 不卡| 亚洲第一综合天堂另类专| 无码人妻黑人中文字幕| 亚洲av第二区国产精品| 人妻精品动漫H无码中字| 中文字幕一卡二卡三卡| 国产乱码精品一区二区三上| 永久黄网站色视频免费直播| 久久国产精品免费一区| 久久精品国产91精品亚洲| 中文字幕人妻在线精品| 巧家县| 国产熟女精品一区二区三区| 99久久婷婷国产综合精品青草漫画 | 日韩精品一区二区三区在线观看 | 日本免费人成视频在线观看| 成人免费A级毛片无码片2022| 九九热久久这里全是精品| 亚洲色大成网站WWW永久麻豆| 综合久久婷婷综合久久| 国产av一区二区亚洲精品| 亚洲中文字幕成人无码| 无码国内精品久久人妻蜜桃| 亚洲成人精品综合在线| 岳普湖县| 国产一区二区三区内射高清| 精品国产欧美一区二区五十路 | 九九热免费在线播放视频| 久久天天躁狠狠躁夜夜婷|