[ADO.NET] 讀取 SQL 表格以列出 Schema 並自動產生 ADO.NET 程式碼與 Stored Procedure

目的: 選取並讀取一個 SQL 表格, 以程式讀取並列出其 Schema, 經過分析後, 自動產生 Select、Insert、Update 與 Delete 等四個 Stored Procedure, 並產生完整的 ADO.NET 程式碼 (VB), 程式中已自動填入所有需要的 Parameters 及 SQL 型別...

原始程式及詳細說明請參考 Code Project 網頁。

 

目的

選取並讀取一個 SQL 表格, 以程式讀取並列出其 Schema, 經過分析後, 自動產生 Select、Insert、Update 與 Delete 等四個 Stored Procedure, 並產生完整的 ADO.NET 程式碼 (VB), 程式中已自動填入所有需要的 Parameters 及 SQL 型別。

註: 最後面那個 tab 是內建的 Command Builder 所自動產生的碼; 雖然如同雞肋, 我還是保留著當作參考。

使用

1. 請在 Code Project 網頁上下載原始檔 (如果你沒有 CodeProject 帳號的話, 我想你可能必須先註冊), 解壓縮後把 ListTableSchema.zh-TW.aspx 及 ListTableSchema.zh-TW.aspx.vb 改名為 ListTableSchema.aspx 與 ListTableSchema.aspx.vb。

2. 打開 VS2008 (我想 VS2005 應該也可以, 但我沒有試過), 打開或建立一個網站 (使用 VB 或 C# 都可以), 再把這兩個檔案以 Add Existing Files 方式加入專案。

3. 在你的 web.config 中找出現有的 connection strings (如果沒有, 至少建立一個)。

4. 現在假設你的 web.config 中有 db1 與 db2 兩個連線字串:

Code Snippet<connectionStrings>
    <add name="db1" connectionString=... />
    <add name="db2" connectionString=... />
</connectionStrings>

5. 在 ListTableSchema.aspx 程式中找到 ddlDb 這個控制項, 並把它的程式碼修改如下:

<asp:DropDownList ID="ddlDb" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlDb_SelectedIndexChanged">
    <asp:ListItem Value="db1">Your description for db1</asp:ListItem>
    <asp:ListItem Value="db2">Your description for db2</asp:ListItem>
</asp:DropDownList>  

6. 把 ListTableSchema.aspx 程式中的 MasterPage 修改成你自己的 MasterPage 或者直接拿掉:

<%@ Page Language="VB" MasterPageFile="~/MasterPages/Management.master" ...

7. 同樣的, 找到 Image1 控制項, 再修改 Update Progress 圖案的位址, 或者直接拿掉:

<asp:Image ID="Image1" runat="server" ... ImageUrl="~/Images/Wheel.gif" />

8. 最後, 在你的 Theme 裡面加上兩個 CSS Style:

.colorBlock{
    background-color: #FFFFCC;
    border-width: 2px;
    border-style: ridge;
    padding: 5px 5px 5px 5px;
}
.sqlCommandHeader
{
    font-family: Verdana, Arial;
    font-weight: bold;
    color: #004400;
    margin-bottom: 1em;
}

其實做到第六個步驟完成後, 程式應該就可以動作了。

補充說明

這個程式還蠻長的, 設計的時間也很久。由於這不是教學, 程式裡面也沒什麼學問可言, 所以程式細節我就不說明了。如果你有興趣的話, 你可以自己把它修改一下, 讓它也可以同時處理不同 table 的資料。

這個程式可以幫忙做很多耗時間的工作, 例如打字和剪貼。未來如果有時間的話, 我可能會讓它能夠產生 C# 的碼。

Disclaimer

Use this program at your own risk!

* 你必須接受 CodeProject Open Licence 才能下載及使用本程式。


Dev 2Share @ 點部落