超級簡單:共用兩個自動產生預存程序的工具

來源:互聯網
上載者:User

     開發一個項目或者開發一個應用系統初期大多數都是從資料庫,類,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、/Files/zhuqil/SQLGenSource.zip

2、/Files/zhuqil/SP_Gen_Public_SourceCodes_VS2005.zip 

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

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

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

部落格園,地球人都知道。

聯繫我們

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