程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 超級簡單:共享兩個自動生成存儲過程的工具

超級簡單:共享兩個自動生成存儲過程的工具

編輯:關於.NET

開發一個項目或者開發一個應用系統初期大多數都是從數據庫,類,UI界面 開始的。其中最令人厭煩的是寫些簡單的CRUD的存儲過程,以及調用這些存儲過 程的方法的類。

我花了很多時間在網上尋找,去找一個能根據能數據庫中一個存在的數據表 ,為我們產生大部分存儲過程和調用這些存儲過程C#代碼的實用的程序。這裡共 享兩個我覺得還不錯的程序給大家。

第一個是SQLAutoGen,如下圖:

程序地址: http://www.codeproject.com/KB/database/SQLAutoGen.aspx

這是通過迭代我們選擇數據表的列,來產生我們需要的代碼。通過使用選擇 一些不同列(將出現在where子句中),使生產腳本變得相當智能。 (見下面的 示例代碼示例)

看上面圖片,能抵得說很多話,它來表明這個應用程序的操作。

下面是這些代碼,通過程序以不同的方式迭代本身,這裡一個結合了 SqlClient和SqlSMO訪問數據庫,得到table和columns等信息:

//Code to iterate tables
private ServerConnection serverConnection = null;
private void btnGo_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
lstTables.Items.Clear();
SqlConnection objCn = new SqlConnection (sqlControl1.ConnectionString);
serverConnection = new ServerConnection(objCn);
Server server = new Server(serverConnection);
TableCollection objTables = server.Databases [sqlControl1.DatabaseName].Tables;
foreach (Table objTable in objTables)
{
lstTables.Items.Add(objTable.Name);
}
this.Cursor = Cursors.Default;
}

//Snippet to show column iteration and generation of  script.

if (chkSelect.Checked)
{
strSQL = "CREATE PROCEDURE [GetAll" + strTableName + "] "  + Environment.NewLine;
strSQL += " As Select ";
foreach (Column item in server.Databases [sqlControl1.DatabaseName].Tables[strTableName].Columns)
{
keyCount++;
strSQL += "[" + item.Name.ToString() + "]";
if (keyCount < server.Databases [sqlControl1.DatabaseName].Tables[strTableName].Columns.Count) strSQL  += "," + Environment.NewLine;
}
strSQL +=" from [" + strTableName + "]";
txtSQL.Text += strSQL + Environment.NewLine +  Environment.NewLine;
}

下面是一個示例表畫面,以及隨後產生的腳本。

CREATE PROCEDURE [GetAllVariables] As Select [ID],  [VarName], [VarDesc], [VarType] from [Variables]
CREATE PROCEDURE [DeleteVariables] (@ID int) As Delete from  [Variables] Where ID = @ID
CREATE PROCEDURE [AddVariables] (@VarName varchar, @VarDesc  varchar, @VarType varchar) As Insert Into [Variables] (  VarName, VarDesc, VarType) Values ( @VarName, @VarDesc,  @VarType) select SCOPE_IDENTITY() 
CREATE PROCEDURE [UpdateVariables] (@ID int, @VarName varchar,  @VarDesc varchar, @VarType varchar) As Update [Variables] set  VarName = @VarName, VarDesc = @VarDesc, VarType = @VarType  Where ID = @ID 
CREATE PROCEDURE [AddUpdateVariables] (@ID int, @VarName  varchar, @VarDesc varchar, @VarType varchar) As Begin If  (Select ID from [Variables] Where ID = @ID) <> 0 Begin  Update [Variables] set VarName = @VarName, VarDesc =  @VarDesc, VarType = @VarType Where ID = @ID End Else Begin  Insert Into [Variables] ( VarName, VarDesc, VarType) Values (  @VarName, @VarDesc, @VarType) select SCOPE_IDENTITY() End End

第二個是codeplex上面的程序:Stored Procedure Generator (for SQL Server 2000/2005) ,界面如下圖所示:

解決方案的結構如下:

項目地址:http://spgen.codeplex.com/

代碼不是特別的難,有興趣可以自己下載研究。這個程序產生的存儲過程中 的where子句中的列是固定的,注定了沒有第一個程序那麼靈活。

為了方便,這裡直接提供了代碼下載地址:

1、http://files.cnblogs.com/zhuqil/SQLGenSource.zip

2、 http://files.cnblogs.com/zhuqil/SP_Gen_Public_SourceCodes_VS2005.zip

這裡也向大家推薦這下面兩個網站,寫著寫著到了今年的最後一天了,期待 明年能將簡單做到極致。

1、http://www.codeproject.com/

2、http://www.codeplex.com/

出處:http://zhuqil.cnblogs.com

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved