JadePool应用范例:完善China软件项目架构(二)

        四、创建数据库,配置数据库连接
        主要完成以下工作:1、创建数据库china;2、配置好数据库连接文件db.xml;3、创建sql文件china_createTable.sql;4、在软件项目中添加sqljdbc4.jar文件;5、在控制台下测试JadePool执行/META-INF/china_createTable.sql文件的方法,完成创建数据库表的工作。

        (一)、创建数据库china
        本范例使用SQL Server 2000数据库。在SQL Server 2000中创建数据库china,并为china数据库创建一个用户名和密码。本范例配置的用户名和密码均为123。

        (二)、配置数据库连接文件db.xml
        在项目源包下的META-INF目录下创建db.xml文件,文件内容如下:
<?xml version="1.0" encoding="GBK"?>
<db>
    <url>jdbc:sqlserver://127.0.0.1\\dbo:1433;databaseName=china</url>
    <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
    <user>123</user>
    <password>123</password>
    <resource></resource>
</db>
        用户可以参照以上代码填写配置项。更详细的说明参阅:高效JDBC编程工具JadePool快速入门 网址http://blog.csdn.net/wj800/article/details/8640359

        (三)、创建建表sql文件china_createTable.sql
        在项目源包下的META-INF目录下创建china_createTable.sql文件,文件内容见附件1。

        根据我个人的经验,在JDBC编程中,有以下几点仅供参考:
                1、每个表尽可能保持唯一的一个主键;
               2、非主键字段允许null值,防止插入单个主键字段时出现异常;
               3、尽可能选择与现实一致的字段类型,如,日期选择日期型,货币选择BigDecimal型,货币避免选择float、double型;
               4、避免设置外键,表间逻辑关系可以在JDBC业务逻辑中实现。


        (四)、在软件项目中添加sqljdbc4.jar文件

        (五)、在控制台下测试JadePool执行sql文件的方法
        在初次创建china数据库后,该数据库不存在用户表,执行以下类china.test.ExcuteSQLFile后,在SQL Server 2000企业管理器中查看china数据库,发现多了几个用户表,查看sw_lianxirenfenlei表,其中有记录存在,这些记录来自/META-INF/china_createTable.sql文件。
/*
 * 在控制台下测试JadePool执行sql文件的方法
 * 2013-03-27
 */
package china.test;

import cn.jadepool.sql.Jade;
import cn.jadepool.sql.JadeTool;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *
 * @author hkm
 */
public class ExcuteSQLFile {

    public static void main(String[] args) throws IOException {
        URL url = ExcuteSQLFile.class.getResource("/META-INF/china_createTable.sql");
        Jade j = new Jade(getCon());
        j.executeSqlFile(url.getFile());
        j.commit();
    }

    /**
     * sqljdbc4.jar
     */
    public static synchronized Connection getCon() {
        Connection con = null;
        String url = "jdbc:sqlserver://127.0.0.1\\dba:1436;databaseName=china";
        String userName = "123";
        String password = "123";
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            con = DriverManager.getConnection(url, userName, password);
        } catch (SQLException ex1) {
            ex1.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
        return con;
    }
}

       

        图:执行j.executeSqlFile(url.getFile());的结果




        附件1:china_createTable.sql文件的内容

/*
软件项目:China
版    本:1.0
数 据 库:MS SQL Server2000
创建日期:2013-03-26
作    者:胡开明
数据库表:包括以下
         1、行政区划                  cn_address                      
         2、名族                      cn_people 
         3、产品分类                  cn_productcategory  
         4、行业分类                  cn_economycategory  
         5、行业门类                  cn_economyfield  
         6、三次产业                  cn_economy  

         7、商务通讯录                sw_tongxunlu 
         8、联系人分类                sw_lianxirenfenlei 
         9、商务通讯录列表            sw_tongxunlu_liebiao   
         10、联系方式分类             sw_lianxifangshi  

*/

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cn_address]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table cn_address(                             /*行政区划主表 */
addresscode varchar(16) primary key,                 /*行政区划编码,主键,根据国家统计局提供的资料录入*/
addressname varchar(50),                             /*行政区划标准名称, 根据国家统计局提供的资料录入*/
labelcn varchar(32),                                 /*中文地名*/
labelen varchar(32),                                 /*英语地名*/
longitude float,                                     /*经度*/
latitude float,                                      /*纬度*/
zip varchar(8),                                      /*邮政编码,是国际通行的作法,故可作为共同部分的字段*/
memo text,                                           /*备注*/
isusing bit default '1'                              /*是否使用*/                                                             
);


if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cn_people]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table cn_people(                              /*民族表 */
people_id int primary key,                           /*民族表,主键*/
minzu varchar(16),                                   /*民族*/
pinxie varchar(16),                                  /*罗马字母拼写法*/
zimu varchar(8)                                      /*字母代码*/                                                        
);


if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cn_productcategory]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table cn_productcategory(                     /*产品分类主表 */
productcode varchar(16) primary key,                 /*产品分类编码,主键,根据国家统计局提供的资料录入*/
productname varchar(200),                            /*产品分类标准名称, 根据国家统计局提供的资料录入*/
memo text,
isusing bit default '0'                              /*是否使用*/                                                             
);

--以下三个表,根据国民经济行业分类(GB/T 4754—2011)设计
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cn_economycategory]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table cn_economycategory(                     /*行业分类表 根据国家统计局提供的资料录入*/
economycode varchar(16) primary key,                 /*行业分类编码,主键,对应大类*/
economyname varchar(400),                            /*行业分类标准名称, 对应名称*/
economyfield varchar(4),                             /*行业分类编码,主键,对应门类(领域) 单个大字母表示,如:A*/
economy varchar(24),                                 /*行业分类标准名称, 对应三次产业*/
isusing bit default '0'                              /*是否使用*/                                                             
);

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cn_economyfield]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table cn_economyfield(                        /*行业门类【经济领域】表 根据国家统计局提供的资料录入*/
economyfield varchar(4) primary key,                 /*行业门类【经济领域】主键,对应门类(领域) 单个大字母表示,如:A*/
economyname varchar(400),                            /*行业门类【经济领域】标准名称, 对应名称*/
economy varchar(24)                                  /*所属三大产业*/                                                      
);

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cn_economy]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table cn_economy(                             /*三大产业表 根据国家统计局提供的资料录入*/
economy varchar(24) primary key,                     /*三大产业主键*/
economyname varchar(400)                             /*三大产业, 对应名称、解释*/                           
);

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sw_tongxunlu]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table sw_tongxunlu(                           /*通讯录*/
tongxunlu_id bigint primary key,                     /*通讯录主键*/
lianxiren varchar(80) ,                              /*联系人,单位或个人*/
fenlei varchar(16),                                  /*分类,如:供应商、客户、快递、维修、服务*/
ziliao text                                          /*相关资料*/                           
);

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sw_lianxirenfenlei]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table sw_lianxirenfenlei(                     /*联系人分类*/
lianxiren_fenlei_id int primary key,                 /*联系人分类主键*/
fenlei varchar(16)                                   /*分类,如:供应商、客户、快递、维修、服务*/
);
delete from sw_lianxirenfenlei;
insert into sw_lianxirenfenlei values(0,'供应商');
insert into sw_lianxirenfenlei values(1,'客户');
insert into sw_lianxirenfenlei values(2,'货运');
insert into sw_lianxirenfenlei values(3,'快递');
insert into sw_lianxirenfenlei values(4,'维修');
insert into sw_lianxirenfenlei values(5,'服务');
insert into sw_lianxirenfenlei values(100,'政府部门');

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sw_tongxunlu_liebiao]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table sw_tongxunlu_liebiao(                   /*通讯录列表*/
tongxunlu_liebiao_id bigint primary key,             /*通讯录列表主键*/
tongxunlu_id bigint,                                 /*通讯录主键*/
fangshi varchar(16) ,                                /*联系方式,如:地址、QQ、电话、传真、手机等等*/
tel varchar(80)                                      /*地址或号码,如:*/                         
);

if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sw_lianxifangshi]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table sw_lianxifangshi(                       /*商务通讯录联系方式*/
lianxifangshi_id int primary key,                    /*联系方式分类主键*/
fangshi varchar(16)                                  /*联系方式,如:地址、QQ、电话、传真、手机等等*/
);
delete from sw_lianxifangshi;
insert into sw_lianxifangshi values(0,'单位');
insert into sw_lianxifangshi values(1,'地址');
insert into sw_lianxifangshi values(2,'电话');
insert into sw_lianxifangshi values(3,'传真');
insert into sw_lianxifangshi values(4,'手机');
insert into sw_lianxifangshi values(5,'QQ');
insert into sw_lianxifangshi values(6,'电子信箱');
insert into sw_lianxifangshi values(7,'信箱');


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值