进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 网站开发 -> JSP -> 文章内容  
一段简单的根据SQLServer数据库表结构生成C#实体类的Java代码

/*
* Created on 2004-10-15
*
* Title: QuickCoder
* Description: 一段简单的根据SQLServer数据库表结构生成C#实体类的Java代码
曾经在学校听殷兆粼教授这样讲过,UML将来应该能够根据已经设计好的业务逻辑,自动生成数据库表和数据间的关联等,并生成实体代码,最好能够再生成部分业务逻辑代码。这样我们的设计就跟画画一样了,我们要做的就是画UML图。数据库结构、程序代码都自动生成。

这里是我在公司的一个项目中为了把数据库实体表生成C#实体而写的一段代码。功能不多,但是可以省敲很多代码。
* Company: http://www.hakatasoft.com
* Author: Shuqun, Zhou
*
*/
package coder;

import java.io.*;
import java.sql.*;
import java.util.*;

/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class QuickCoder {
public static Map MSSQLServerDataTypeCSharpTypeMap = new HashMap();

static {
MSSQLServerDataTypeCSharpTypeMap.put("char", "string");
MSSQLServerDataTypeCSharpTypeMap.put("varchar", "string");
MSSQLServerDataTypeCSharpTypeMap.put("nvarchar", "string");
MSSQLServerDataTypeCSharpTypeMap.put("text", "string");
MSSQLServerDataTypeCSharpTypeMap.put("datetime", "System.DateTime");
MSSQLServerDataTypeCSharpTypeMap.put("int", "int");
MSSQLServerDataTypeCSharpTypeMap.put("int identity", "float");
MSSQLServerDataTypeCSharpTypeMap.put("float", "float");
MSSQLServerDataTypeCSharpTypeMap.put("bit", "string");
MSSQLServerDataTypeCSharpTypeMap.put("numeric", "double");
MSSQLServerDataTypeCSharpTypeMap.put("money", "double");
}

public static void prt(Object o) {
System.out.println(o);
}

public static void prt(int i) {
System.out.println(i);
}

public static void table2CSharp(ResultSetMetaData rsmd, String namespace, String className) throws IOException, SQLException {
StringBuffer cs = new StringBuffer();
String line = System.getProperty("line.separator");
cs.append("using System;").append(line).append(line);
cs.append("/**").append(line);
cs.append(" * Generate by QuickCoder.").append(line);
cs.append(" * 使用前请修改文件名和类名(去掉`Auto_'前缀)").append(line);
cs.append(" */").append(line).append(line);
cs.append("namespace ").append(namespace).append(" {").append(line);
cs.append("\tpublic class ").append(className).append(" {").append(line);
int c = rsmd.getColumnCount();
String dbType, type, name;
Object t;
for (int i = 1; i <= c; i++) {
name = rsmd.getColumnLabel(i).replace(' ', '_');
dbType = rsmd.getColumnTypeName(i);
t = MSSQLServerDataTypeCSharpTypeMap.get(dbType);
if (t != null) {
type = t.toString();
}
else {
type = "____" + dbType;
prt(namespace + "" + className + " " + dbType);
}
cs.append("\t\t").append(type)
.append(" m_").append(name).append(";").append(line);
/* 由于同组一工程师说这种C#的getter, setter写法不好,我就改成下面那种写法了
不过我认为他是在用Java的思想审视C#,我找不到这样写的不好之处
cs.append("\t\tpublic ").append(type).append(" ").append(name).append(" ").append("{").append(line);
cs.append("\t\t\tget {").append(line);
cs.append("\t\t\t\treturn m_").append(name).append(";").append(line);
cs.append("\t\t\t}").append(line);
cs.append("\t\t\tset {").append(line);
cs.append("\t\t\t\tm_").append(name).append(" = ").append("value;").append(line);
cs.append("\t\t\t}").append(line);
cs.append("\t\t}").append(line);
*/


cs.append(line);

cs.append("\t\tpublic ").append(type).append(" Get").append(name).append("() {").append(line);
cs.append("\t\t\treturn this.m_").append(name).append(";").append(line);
cs.append("\t\t}").append(line);

cs.append(line);

cs.append("\t\tpublic void Set").append(name).append("(").append(type).append(" ").append(name).append(") {").append(line);
cs.append("\t\t\tthis.m_").append(name).append(" = ").append(name).append(";").append(line);
cs.append("\t\t}").append(line);

if ("int".equals(type) || "float".equals(type) || "double".equals(type)) {
cs.append(line);

cs.append("\t\tpublic string").append(" Get").append(name).append("AsString() {").append(line);
cs.append("\t\t\treturn this.m_").append(name).append(".ToString();").append(line);
cs.append("\t\t}").append(line);

cs.append(line);

cs.append("\t\tpublic void Set").append(name).append("(string s) {").append(line);
cs.append("\t\t\tthis.m_").append(name).append(" = ").append(type).append(".Parse(s);").append(line);
cs.append("\t\t}").append(line);
}
cs.append(line);
}
cs.append("\t}").append(line);
cs.append("}").append(line);
//prt(cs);
File file = new File("C:/tmp", className + ".cs");
FileOutputStream fos = new FileOutputStream(file);
fos.write(cs.toString().getBytes());
fos.close();
}

public static void main(String[] args) throws Exception {
prt("Start");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:SCE", "SCE", "SCE");
Connection con2 = DriverManager.getConnection("jdbc:odbc:SCE", "SCE", "SCE");
Statement stmt = con2.createStatement();
DatabaseMetaData meta = con.getMetaData();
ResultSet rs = meta.getTables(null, null, null, null);
String tableName, tableType;
ResultSet rs2;
while (rs.next()) {
//rsmd;
//System.out.println(rsmd.getColumnCount());
tableName = rs.getString("TABLE_NAME");
tableType = rs.getString("TABLE_TYPE");
if ("TABLE".equals(tableType) && tableName.startsWith("tb_")) {
//prt(tableName);
rs2 = stmt.executeQuery("SELECT * FROM [" + tableName + "]");
table2CSharp(rs2.getMetaData(), "Sce.Action.Objects", "Auto_O_" + tableName.substring(3, tableName.length()).replace('-', '_'));
rs2.close();
}
}
rs.close();
stmt.close();
con.close();
con2.close();
prt("End");
}
}




在百度中搜索:一段简单的根据SQLServer数据库表结构生成C#实体类的Java代码
在Google中搜索:一段简单的根据SQLServer数据库表结构生成C#实体类的Java代码
在Yahoo中搜索:一段简单的根据SQLServer数据库表结构生成C#实体类的Java代码

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· 一段非常简单的让图片自动切换js代码
· 解剖一段录制的宏
· 看一条Linux命令 了解一段人类文明
· C# 4.0语言将出现重大改变,带来一段Code..
· 按比例微缩图片的一段小小的JS代码
· 一段asp查询xml的代码,实现了无刷新查询..
· 一个有趣的JS:随机效果文本-定时的从一..
· 这个问题不该在这里问哦!看看吧,一段SE..
· 如何压缩一段文本后存入mysql中
· 一段加密函数
 
· 提升JSP页面响应速度的七大秘籍绝招
· 开发一个调试JSP的Eclipse插件
· JSP报表打印的一种简单解决方案
· JSP/Servlet的重定向技术综述
· java的md5加密类(zt)
· 一个用来访问http服务器的东西。功能类似..
· 菜鸟调试手记一(sql server 中文问题)
· Java性能优化技巧集锦(2)
· 用java压缩文件示例(没有中文问题)
· 使用XML/HTC/DHTML模拟标准Windows菜单

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)