利用数据库,生成一个.net 调用的类文件(只支持对一个表操作的类)

原创 2006年06月14日 15:03:00

/*
 利用数据库生成.net 使用的类,简化程序编写
 为考虑效率问题,没有利用数据库循环,格式不美观。(需要利用.net 工具调整)
 作者:  邹黎鹏(zlp321001@hotmail.com
    最后更新时间:2006-6-14
 作用:  为简化.net 对基础类的编写(具体也可以根据自己的需要生成通用的类)
    调用:     JRJ_Jeneratec# '','','','ddl_log'
*/

ALTER PROC JRJ_Jeneratec#
 @ServerName varchar(20)='', --不指定则指当前服务器
 @dbname varchar(20)='',  --不指定则指当前数据库
 @Password varchar(20)='', --密码
 @TABLENAME VARCHAR(200),    --表名
 @CodePath varchar(200)='D:/数据库生成C#类/' --文件保存路径
AS
BEGIN
 SET NOCOUNT ON
 DECLARE @SQL VARCHAR(8000)
 DECLARE @SQL_Attribute VARCHAR(8000)
 DECLARE @SQL_Structure VARCHAR(8000)
 DECLARE @SQL_Default   VARCHAR(8000)
 DECLARE @SQL_Function  VARCHAR(8000)
 DECLARE @SQL_GetValue  VARCHAR(8000)
 DECLARE @SQL_AttributeVALUE  VARCHAR(8000)
 DECLARE @FILE_PAHT VARCHAR(200)
 DECLARE @SQL_Temp varchar(8000)
if exists(select 1 from tempdb..sysobjects where id=object_id('tempdb..##'))
 DROP TABLE  ##
 CREATE TABLE ## (COLUMNS VARCHAR(8000))
 SET @SQL_Attribute=''
 SET @SQL_Structure=''
 SET @SQL_Default=''
 SET @SQL_Function=''
 SET @SQL_GetValue=''
 SET @SQL_AttributeVALUE=''
 SET @SQL='using System;'+CHAR(13)
 SET @SQL=@SQL+'namespace Model'+CHAR(13)
 SET @SQL=@SQL+'{'+CHAR(13)
 SET @SQL=@SQL+CHAR(32)+'/// <summary>'+CHAR(13)
 SET @SQL=@SQL+CHAR(32)+'/// '+@TABLENAME+' 的摘要说明。'+CHAR(13)
 SET @SQL=@SQL+CHAR(32)+'/// </summary>'+CHAR(13)
 SET @SQL=@SQL+CHAR(32)+'public class '+@TABLENAME+''+CHAR(13)
 SET @SQL=@SQL+CHAR(32)+'{'+CHAR(13)

 INSERT INTO ##
 SELECT @SQL
 SELECT @SQL_Attribute=@SQL_Attribute++CHAR(32)+'private'+CHAR(32)+
   CASE WHEN xtype IN(34,35,99,165,173,189)   THEN 'byte[]'
     WHEN xtype IN(36,98,167,175,231,239,241,231) THEN 'string'
     WHEN xtype IN(48,52,56,127)     THEN 'int'
     WHEN xtype IN(58,61)       THEN 'DateTime'
     WHEN xtype IN(59,60,62,106,108,122)   THEN 'Double'
     WHEN xtype IN(104)        THEN 'bool'
     ELSE '数据类型未知' End
   +CHAR(32)+'_'+NAME+';'+CHAR(10)
 FROM SYSCOLUMNS WHERE ID=OBJECT_ID(''+@TABLENAME+'')
 ORDER BY COLORDER

 INSERT INTO ##
 SELECT @SQL_Attribute

 SELECT @SQL_Default=@SQL_Default+CHAR(32)+
   CASE WHEN xtype IN(36,98,167,175,231,239,241,231) THEN '_'+NAME+'=""'
     WHEN xtype IN(48,52,56,127)     THEN '_'+NAME+'=0'
     ELSE '数据类型未知' End
     +';'+CHAR(13)+CHAR(32)
 FROM SYSCOLUMNS WHERE ID=OBJECT_ID(''+@TABLENAME+'')
 AND xtype IN(36,98,167,175,231,239,241,231,48,52,56,127)
 ORDER BY COLORDER
 SET @SQL_Default=@SQL_Default+CHAR(32)+'}'

 SET @SQL_Structure=@SQL_Structure+CHAR(32)+'public '+@TABLENAME+'()'
 SET @SQL_Structure=@SQL_Structure+CHAR(13)+CHAR(32)+CHAR(32)+'{'
 SET @SQL_Structure=@SQL_Structure+CHAR(13)+CHAR(32)+CHAR(32)+'//'
 SET @SQL_Structure=@SQL_Structure+CHAR(13)+CHAR(32)+CHAR(32)+'// TODO: 在此处添加构造函数逻辑'
 SET @SQL_Structure=@SQL_Structure+CHAR(13)+CHAR(32)+CHAR(32)+'//'
 SET @SQL_Structure=@SQL_Structure+CHAR(13)+CHAR(32)+''

 INSERT INTO ##
 SELECT @SQL_Structure

 INSERT INTO ##
 SELECT @SQL_Default

 SET @SQL_Function=@SQL_Function+CHAR(13)+CHAR(32)+CHAR(32)+'public '+@TABLENAME+'('
 SELECT @SQL_Function=@SQL_Function+
  CASE WHEN xtype IN(34,35,99,165,173,189)   THEN 'byte[]'
    WHEN xtype IN(36,98,167,175,231,239,241,231) THEN 'string'
    WHEN xtype IN(48,52,56,127)     THEN 'int'
    WHEN xtype IN(58,61)       THEN 'DateTime'
    WHEN xtype IN(59,60,62,106,108,122)   THEN 'Double'
    WHEN xtype IN(104)        THEN 'bool'
    ELSE '数据类型未知' End
  +CHAR(32)+NAME+','
  FROM SYSCOLUMNS WHERE ID=OBJECT_ID(''+@TABLENAME+'')
  ORDER BY COLORDER
 SET  @SQL_Function=stuff(@SQL_Function,len(@SQL_Function),1,')')

 SET @SQL_Function=@SQL_Function+CHAR(13)+CHAR(32)+CHAR(32)+'{'
 SELECT @SQL_Function=@SQL_Function+CHAR(13)+CHAR(32)+CHAR(32)+CHAR(32)+'this.'+'_'+NAME+' = '+NAME+';'
   FROM SYSCOLUMNS WHERE ID=OBJECT_ID(''+@TABLENAME+'')
 ORDER BY COLORDER
 SET @SQL_Function=@SQL_Function+CHAR(13)+CHAR(32)+CHAR(32)+'}'

 INSERT INTO ##
 SELECT @SQL_Function

 SET @SQL_AttributeVALUE=@SQL_AttributeVALUE+CHAR(13)+CHAR(32)+'//属性 '
 SELECT @SQL_AttributeVALUE=@SQL_AttributeVALUE+CHAR(13)+CHAR(32)+'public '+CHAR(32)+
   CASE WHEN xtype IN(34,35,99,165,173,189)   THEN 'byte[]'
     WHEN xtype IN(36,98,167,175,231,239,241,231) THEN 'string'
     WHEN xtype IN(48,52,56,127)     THEN 'int'
     WHEN xtype IN(58,61)       THEN 'DateTime'
     WHEN xtype IN(59,60,62,106,108,122)   THEN 'Double'
     WHEN xtype IN(104)        THEN 'bool'
     ELSE '数据类型未知' End
    +CHAR(32)+NAME+CHAR(13)+CHAR(32)+'{'+CHAR(13)+CHAR(32)
    +'get { return _'+NAME+';}'+CHAR(13)+CHAR(32)
    +'set { _'+NAME+' = value;}'+CHAR(13)+CHAR(32)
    +'}'
 FROM SYSCOLUMNS WHERE ID=OBJECT_ID(''+@TABLENAME+'')
 ORDER BY COLORDER

 INSERT INTO ##
 SELECT @SQL_AttributeVALUE

 INSERT INTO ##
 SELECT CHAR(13)+CHAR(32)+'}'+CHAR(13)+'}'

 SET @FILE_PAHT=@CodePath
 SET @FILE_PAHT=@FILE_PAHT+@TABLENAME+'.CS'
 DECLARE @file INT
 EXEC master..xp_fileexist @FILE_PAHT,@file out
 IF @file=0
 BEGIN
 --生成文件夹和目录
 SET @CodePath='MD '+@CodePath+''
 EXEC master..xp_cmdshell @CodePath
 END
 IF isnull(@ServerName,'')='' SET @ServerName=@@ServerName
 IF isnull(@dbname,'')='' SET @dbname=DB_NAME()

 EXEC('EXEC master..xp_cmdshell ''bcp " SELECT COLUMNS FROM '+@dbname+'..## " queryout "'+@FILE_PAHT+'" -c -q -S'+@ServerName+' -Usa -P'+@Password+'''')

SET NOCOUNT OFF
END

 

 

 

 

求记录中的最新数据的方法!

已知数据:Column1    Column2     Column3    Column4A                      10                     am      ...

SQL Server 使用数据库发送邮件(sp_send_dbmail)

项目开发中,很多地方需要发送邮件,比如下订单,取消订单等等,可以通过程序代码(c#,java等)发送,亦可以使用数据库的触发器通过sql语句发送. 使用数据库发送邮件,一般使用存储过程 xp_send...

一个方便的.net数据库操作类(很容易扩展,以支持多种数据库)

转自 http://www.cnblogs.com/dreamszx/archive/2011/01/13/1934598.html本文分三部分1.数据抽象类(只有抽象,没有实现,由继承类去实现,以支...

一个ADO.NET数据库操作实例

  • 2010年06月23日 17:36
  • 2.83MB
  • 下载

提供一个.net下通用的Cookie操作类

提供一个.net下通用的Cookie操作类笔者曾经参与一个大型多用户商城的开发,系统用户角色很多,有买家,卖家,代理商,系统管理员,普通管理员,超级管理员等,这些用户都涉及到登陆系统,然后建立cook...

一个生成验证字符或数字的增强类(基于.net1.1)及调用示例

using System; using System.Drawing; using System.Drawing.Imaging; using System.Web.UI; using System....

.NET:一个非常好用的SQL数据库处理类

using System; using System.Collections.Generic; using System.Collections; using System.Collections.S...

从配置文件读取数据连接信息,利用泛型和java反射机制,写一个公共的增删改查数据库操作类

背景: 最近在学习java,然后就看了spring jdbc。对于菜鸟来说,看得实在头大,然而还有强迫症作祟最是要不得。又要导入common的相关jar包,又要导入mysql的jar包,还要导入spr...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用数据库,生成一个.net 调用的类文件(只支持对一个表操作的类)
举报原因:
原因补充:

(最多只允许输入30个字)