用户操作
[即时聊天] [发私信] [加为好友]
曾巧ID:numenZQ
42202次访问,排名2821,好友0人,关注者0人。
numenZQ的文章
原创 29 篇
翻译 16 篇
转载 2 篇
评论 16 篇
最近评论
xh:不推荐修改web.xml,设置java_options更好
numenZQ:补充说明一点,使用java.util.zip包时,是以UTF-8编码格式读取的文件名,因此在中文windows操作系统(Windows操作系统默认字符集为:GBK)中使用时会导致文件名解析错误,因此需要使用org.apache.tools.zip.ZipEntry和 org.apache.tools.zip.ZipOutputStream类来解决这一问题。
numenZQ:这个是需要明确知道字符串的成分,该方法只是为了满足读取不同字符集相应字符串,还是以“多哈亚运会”为例:如果字符集为GBK,截取前6个字节,结果为:“多哈亚”;当字符集为UTF-8时,截取前6个字节,结果则为:“多哈”,这是因为GBK是双字节编码,而UTF-8是三字节变长编码,如果不分字符集来读取对应长度的字串,则会出现字串内容与预期不符,长度错误等问题。
lyazure:仔细看了你的代码,作用是从一个字符串中获取指定字节数的字符,不知道你要这么做的最终目的是用来做什么。除非明确知道字符串的成分,否则这种做法很难做到完美,比如你的代码中,假如出现要从“多哈亚运会”这样的字符串中截取7个字节,最终会截得3个字符。
Alexandre:ab8e44bc75204d49bf0c9fe68a2b2176 matura foto amatoriale
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Eclipse与Derby集成收藏

    新一篇: Java Annotation(1) | 旧一篇: 使用Ant构建数据库

     

    作者:曾巧(numen

     

    摘要

    Apache Derby是一个完美的,并且开源的,100% Java编写的,容易管理的关系数据库管理系统,它可以和一些商业产品的特性进行交付。

     

    正文

    Apache Derby 是一个与平台无关的数据库引擎,它以 Java 类库的形式对外提供服务。与其他难以部署的数据库不同,安装 Derby 非常简单,只需要将其 .jar 文件复制到系统中并为您的项目添加该 .jar 文件即可。

    尽管 Derby 很容易安装,但是它的特性却非常丰富。它可以支持关系数据库中的所有企业级的特性,包括崩溃恢复、事务回滚和提交、行/表级锁、视图、主键/外键约束、触发器、子查询表达式,等等。

    另外,Derby提供了Eclipse的插件供开发人员使用,本文主要介绍插件的安装及使用。

       

    内容

    l         Derby下载

    l         安装插件

    l         使用插件

    l         运行模式

    l         例子

    l         访问和查看数据

    l         使用IJ工具

    l         sysinfo工具

    l         dblook工具

    l         概要

     

    Derby下载

    撰写本文时,Derby的最新版本为10.2.2.0,你可以在Derby的官方网站下载,同时也可以下载Derby的两个Eclipse插件:derby_core_pluginderby_ui_plugin;在下面使用前,请安装好JVM 1.4.x或更高版本;以及Eclipse 3.x

     

    安装插件

    Derby插件的安装与其他Eclipse插件安装类似,只需要将之前下载的两个插件解压到Eclipse plugins目录下,然后重新启动Eclipse即可。你可以通过Plugin Details窗口来查看该插件是否安装成功:选择菜单[Help]->[About Eclipse SDK],然后点击[Plugin Details],如下图:

       

    使用插件

    在使用该插件前,我们先创建一个Java项目,取名为DerbyDemo,然后在Package Explorer视图选择该项目,单击右键选择菜单[Apache Derby]->[Add Apache Derby Nature],如图:

        接下来是配置Derby相关属性,在Package Explorer视图选择项目单击[Properties]在左边的属性列表中选择Apache Derby;并将 Derby 的主目录设为不同于项目根目录的某个目录,例如D:/derbyDB,如图:

    配置完毕后,我们就可以启动Derby服务器了,在Package Explorer视图选择项目单击[Apache Derby]->[Start Derby Network Server];控制台将输出Derby的启动信息,如图:

        同样的,Derby 服务器的关闭也是类似的,Package Explorer视图选择项目单击[Apache Derby]->[Stop Derby Network Server]

        另外,我们在[Apache Derby]菜单下看到的ijInteractive SQL)和sysinfoDerby System Information)工具将在后面进行介绍。

     

    运行模式

    您可以采用两种模式来部署和运行Derby

    l         嵌入式模式(embedded mode中,Derby只处理来自与应用程序使用的JVM相同的JVM的请求。在采用嵌入式模式来使用Derby时,应用程序会在启动和关闭时分别自动启动或停止关系引擎。Derby包的derby.jar文件(2MB)包含了Derby 数据库引擎和嵌入式JDBC驱动程序。

    l         网络服务器模式(network server mode中,Derby会处理来自不同JVM的应用程序请求。或者,如果您喜欢使用PerlPHPPythonC来编写程序,那么您也可以部署一个Derby网络服务器,并通过各种语言特有的模块连接到这个服务器上,例如PerlDBIDatabase Interface)和PHPODBCOpen Database Connectivity)。Derbyderbynet.jar文件(0.2MB)包含了Derby Network Server

     

    例子

        本例子将创建一个术语表,然后插入一些数据,并通过eclipse和程序对该表进行操作,关于Derby的高级例程将在其他文档中进行介绍。在开始介绍该例子前,请先阅读《项目组织的最佳实践.doc》文档,本例的文档结构也将与之相同。下面开始我们的例程吧。

    1、  按照之前所讲的,启动Derby数据库服务;

    2、  选择菜单[Window]->[Show View]->[Other],然后在Show View窗口选择Database Explorer;如图:

    3、  Database Explorer视图,右击[Connections],然后选择[New Connection];如图:

    4、  配置数据库连接信息,用户名和密码设置成为admin,另外可以根据JDBC driver的不同,而设置不同的运行模式,相应的Class location也需要修改,为方便起见,我们使用的是Derby网络服务器模式;在生产环境中,我们将切换到Derby嵌入式模式中,以避免在网络操作过程中运行DDL脚本;如图:

    5、  然后在选择Database Explorer视图下选择刚才创建的数据库demoAPP schema下,右击[Tables]选择[New]->[With SQL Editor],新建创建表的脚本;代码及图片如下:

     

    CREATE TABLE APP.GLOSSARY 
      (TERM_ID INT NOT NULL GENERATED ALWAYS AS IDENTITY
        (start WITH 1, INCREMENT BY 1),
          TERM VARCHAR(80) NOT NULL,
          DEFINITION VARCHAR(500) NOT NULL);

    6、  用类似的方法为该表创建插入数据脚本;代码如下:

    INSERT INTO APP.GLOSSARY VALUES (DEFAULT,'Velocity','Rapidity or speed of motion; specifically, the distance traveled per unit time.');

    INSERT INTO APP.GLOSSARY VALUES (DEFAULT,'Value','Monetary or material worth.');

    INSERT INTO APP.GLOSSARY VALUES (DEFAULT,'Speed','The magnitude of a velocity.');

    INSERT INTO APP.GLOSSARY VALUES (DEFAULT,'Agile','Characterized by quickness, lightness, and ease of movement; nimble.');

    7、  运行脚本前,一定要保证选择正确的数据库连接,在脚本编辑框单击右键,然后选择[Use Database connection],如图:

    8、  运行脚本有多种方法,你可以通过Ant来运行脚本,也可以直接在之前的脚本编辑框单击右键,选择[Run SQL],为了简便,我们直接通过[Run SQL]运行脚本了,运行结果将在Data Output视图显示。如图:

    9、  刷新Database Explorer视图,就能看见刚才创建的Glossary表及数据,并能对其进行修改,如图:

    10、              Java代码实现对Derby的访问也比较简单,更其它的数据库访问方式类似,如下例:

     

    package com.gelc.db.derby.demo;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;

    /**
     * A derby demo
     * 
     * 
    @author numen
     * 
     
    */

    public class DerbyDemo {

        
    /**
         * 
    @param args
         * 
    @throws Exception
         
    */

        
    public static void main(String[] args) throws Exception {

            Class.forName(
    "org.apache.derby.jdbc.ClientDriver").newInstance();

            String url 
    = "jdbc:derby://localhost:1527/demo;create=true";

            String strSql 
    = "select g.term_id, g.term from app.glossary g";

            Connection conn 
    = DriverManager.getConnection(url, "admin""admin");

            Statement stat 
    = conn.createStatement();

            ResultSet rs 
    = stat.executeQuery(strSql);

            
    while (rs.next()) {
                System.out.print(rs.getString(
    "term_id"+ ""
                        
    + rs.getString("term"));
                System.out.println(
    " ");
            }


            
    if (rs != null{
                rs.close();
                rs 
    = null;
            }


            
    if (stat != null{
                stat.close();
                stat 
    = null;
            }


            
    if (conn != null{
                conn.close();
                conn 
    = null;
            }

        }

    }

     

    使用IJ工具

    IJDerby的交互式JDBC脚本工具。它让您可以通过脚本来访问JDBC的特性。Java命令行的语法不同,输入控制台的IJ命令必须以分号结束。在创建数据库和加载数据时所看到的显示结果中,IJ执行的和在控制台结果上显示的每一行都有一个结束分号。

    使用IJ运行脚本的方法有:

    l         指定输入文件。

    l         从文件中重定向标准输入。

    l         IJ命令行中运行脚本。

    在通过Java命令行来指定输入文件或在IJ命令行中运行脚本时,输出结果会被重定向到控制台。当您将IJ的输入重定向为从一个文件中获得时,那么输出结果就不会发送到控制台。您可以通过将输出结果重定向到一个文件中或者指定ij.outfileproperty来保存输出结果,如下面的代码所示:

    java -Djdbc.drivers=org.apache.derby.jdbc.EmbeddedDriver \

    org.apache.derby.tools.ij < ourscript.sql > ouroutput.txt

    IJ的某些属性特性被默认设置为true,这样可以有效地利用这个工具。例如,ij.URLCheck属性会检查URL属性,并根据数据库连接URL的该属性的预定值来验证它们的有效性。IJ的其他属性特性被默认设置为false,在某些情况中您需要对这些值进行修改。例如,ij.showErrorCode属性,它会显示SQL异常错误,通常被设置为false。如果您正在体验SQL查询和命令的功能,可能会希望将其设置为true,这样就可以看到SQL异常错误代码的反馈了。IJ中被默认设置为false的另外一个属性特性是ij.unicodeEscape。如果您正在使用一种需要Unicode转义序列的语言来使用IJ,那就要打开这个属性,并将IJ设置成这种语言,如下所示。

    java -Dderby.ui.territory=ja_JP \

    -Dderby.ui.codeset=GB2312 \

    -Dij.unicodeEscape=on -Dij.protocol=jdbc:derby: \

    org.apache.derby.tools.ij

    另外一个有用的IJ属性是ij.connection.connectionName。当您运行脚本来创建和部署数据库时,有时需要创建多个连接来连接和创建多个数据库。下面就是一个例子:

    java -Dij.connection.tours1=jdbc:derby:ourDB \

    -Dij.connection.anotherConn=jdbc:derby:moreDB\;create=true \

    org.apache.derby.tools.ij

    关于IJ最后还有一点需要注意:Derby IJ的一个嵌入式实现在自己退出或碰到脚本结束时就会关闭Derby(一个例外是运行DerbyJ2EE服务器,这种情况不会关闭Derby)。

    Eclipse里,启动Derby服务器,Package Explorer视图选择项目单击[Apache Derby]->[ij(Interactive SQL)],就能进入ij视图,连接正确的数据库后,就可以执行预计了,如图:

     

    使用sysinfo 工具

    sysinfo 工具(在 derbytools.jar 中)显示了有关 Java 环境和 Derby 的信息,包括版本信息、Derby 的类路径、其他 Java JVM 环境信息。启动Derby服务器,Package Explorer视图选择项目单击[Apache Derby]->[sysinfo(Derby System Information)],在控制台就会显示这些信息,如图:

    当然,你也可以执行下面的命令来查看系统信息:

    java -cp $DERBY_CLASSPATH org.apache.derby.tools.sysinfo

     

    dblook工具

    dblook工具让您可以查看数据库的所有或部分数据定义语言(DDL)。DDL对数据库中的数据进行了描述。当然,您也可以使用create index DDL SQL命令来创建索引。在使用dblook tool工具时,它会列出这些关系。您已经启动了嵌入式 Derby;如果您打开了一个新的命令行,并试图使用dblook,那么您希望引导到嵌入式Derby JVM中吗?不会。您必须在 jdbc:derby:后面指定一个完整的路径。这部分JDBC URL协议称为子子协议(subsubprotocol。您还必须要输入数据库用户名(APP)和密码(APPdbpw)。用来访问DDL和将DDL转储到文件中的典型命令如下所示。

    java -cp $DERBY_CLASSPATH \

    org.apache.derby.tools.dblook -d \

    'jdbc:derby:/home/mstreicher/java/geronimo/var/derby/Databases/JPetStoreDB: \

    user=APP;password=APPdbpw;' -o ourDB_DDL.sql

    执行这个命令之后,会在执行该命令的目录中创建一个ourDB_DDL.sql文件。

     

     

    概要

    Cloudscape为基础构建的Derby,已经发展成为嵌入式数据库的强者;本文主要介绍了在Eclipse里如何与Derby集成开发,并加以例子说明

       

    更多信息

    ·Apache Derby

    http://db.apache.org/derby/index.html

    ·Apache Derby 资源中心

    http://www.ibm.com/developerworks/cn/opensource/top-projects/derby.html

    ·项目组织的最佳实践.doc

       

     

    发表于 @ 2007年06月07日 09:10:00|评论(loading...)|编辑

    新一篇: Java Annotation(1) | 旧一篇: 使用Ant构建数据库

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © numenzq