利用数据库,生成一个.net 调用的类文件(只支持对一个表操作的类)
2006-06-14 15:03
721 查看
/*
利用数据库生成.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
利用数据库生成.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
相关文章推荐
- 利用python生成一个导出数据库的bat脚本文件
- 从数据库中调用数据生成rar文件(自己的一个小实例)
- 利用python生成一个导出数据库的bat脚本文件的方法
- C# 利用自带xsd.exe工具操作XML-如通过XML生成xsd文件
- JAVA读取XML文件并利用该文件对数据库进行配置操作
- asp.net2.0 利用Dataset,从数据库导出并生成无限级类别的XML文件
- 利用jdk对xsd文件操作生成java实体并解析生成的xml
- 利用Exchange的数据库文件生成活动目录帐号
- 利用Java注解将常量类生成js文件供前端调用 推荐
- 一个支持操作内存文件操作的类
- 【mysql】iBator 数据库操作(自动生成文件)
- 分享一个自己利用学的IO流操作封装了一个小工具进行文件复制剪切和删除功能
- 利用支持ODBC的CRecordset类实现对数据库的操作
- Java封装JDBC数据库增、删、改、查操作成JAR文件,以供Web工程调用,适用于多种数据库
- 在家看孩子,10分钟生成一个业务管理系统【能支持多数据库,大数据,流程审批,权限控制,即时提醒】,视频讲解详细实现步骤
- Hibernate:利用配置文件生成数据库
- 自动生成数据库连接配置文件的工具(调用VS2005数据源选择对话框)
- 本文利用matlab创建了一个小型数据库写入excel用于调用
- 【廖雪峰 python教程 课后题 切片】利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:
- Delphi利用ADO连接数据库报错“bof或eof中有一个是真,或者当前记录已被删除,所需的操作要求一个当前的操作”