
说明
最近完成的一个小工具的升级改进升到.NET2005,用于C#(其它语言其实也可以,只要更改模板文件既可)自动产生代码.根据模板文件,及数据库表的关系,来自动产生代码.为了减少重复劳动.的工作量.
原理
根据数据库里的系统表来获得数据库信息,然后产生数据表的关系,然后根据数据库信息替换板模文件中的相应内容从而生成 完成数据层的C#外接程序 源文件,及SQL 存储过程.
不足
在模板文件那块应该做成类似字典的形式,有一定的语法定义就更完美了.
产生的代码
____________________________________________________ .CS
using System;
using System.Data;
using System.Collections;
using System.Data.SqlClient;
namespace DodeAutoTest
{
public class OrderDetailsOP
{
private SqlConnection conn=new SqlConnection(@"server=info-jinlei/netsdk;database=northwind;user id=sa;pwd=goodone");
public OrderDetailsOP()
{
}
public ArrayList OrderDetails_Get(out string E)
{
SqlDataReader drOrderDetails=null;
SqlCommand cmdOrderDetails=new SqlCommand();
cmdOrderDetails.CommandType=CommandType.StoredProcedure;
cmdOrderDetails.Connection=conn;
cmdOrderDetails.CommandText="p_OrderDetails_Get";
ArrayList alOrderDetails=new ArrayList();
try
{
E="1";
conn.Open();
drOrderDetails=cmdOrderDetails.ExecuteReader();
while(drOrderDetails.Read())
{
OrderDetails srcOrderDetails=new OrderDetails();
srcOrderDetails.OrderID=Convert.ToInt32(drOrderDetails["OrderID"]);
_____________________________________________________________ sql 存储过程
ALTER PROCEDURE dbo.p_OrderDetails_UpdByOrderID
@OrderID int,
@ProductID int,
@UnitPrice money,
@Quantity smallint,
@Discount real
AS
BEGIN
UPDATE
[OrderDetails]
SET
ProductID=@ProductID,UnitPrice=@UnitPrice,Quantity=@Quantity,Discount=@Discount
WHERE
OrderID = @OrderID
END
GO
模板文件
___________________________________________________________cs文件的模板
using System;
using System.Data;
using System.Collections;
using System.Data.SqlClient;
namespace <%namespace%>
{
public class <%class%>OP
{
private SqlConnection conn=new SqlConnection(@"<%connstr%>");
public <%class%>OP()
{
}
___________________________________________________________sql存储过程的模板
<add%
CREATE PROCEDURE dbo.p_<%tabname%>_Add
<%paddparm%>
AS
BEGIN
INSERT INTO [<%tabname%>]
<%addintfield%>
VALUES
<%addvaluefield%>
<iden- SET @-outputfield- = @@IDENTITY -iden>
END
public ArrayList <%tabname%>_Get(<parkey- -keytype- -key-,-parkey>out string E)
{
SqlDataReader dr<%tabname%>=null;
SqlCommand cmd<%tabname%>=new SqlCommand();
cmd<%tabname%>.CommandType=CommandType.StoredProcedure;
cmd<%tabname%>.Connection=conn;
cmd<%tabname%>.CommandText="p_<%tabname%>_Get";
愿望
我愿意把程序发给任何人,希望能够不断升级改进,使之成为一款非常好的工具
另:TNND 的我发到CODEPROJEC上去,居然把我的文章删了,我用的是中英两种文字的.发了个这种文件给我.

介绍了一个用于自动生成C#代码的小工具,通过读取数据库表结构和使用模板文件,能够快速生成数据层代码及SQL存储过程,有效减少手动编码的工作量。
3050

被折叠的 条评论
为什么被折叠?



