「java连接derby」Java连接mysql

博主:adminadmin 2022-12-01 17:49:10 61

本篇文章给大家谈谈java连接derby,以及Java连接mysql对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 6 中自带的javaDB(derby)数据库,是否不用启动服务,直接可以和jdk进行交互呀?

新安装了 JDK 6 的程序员们也许会发现,除了传统的 bin、jre 等目录,JDK 6 新增了一个名为 db 的目录。这便是 Java 6 的新成员:Java DB。这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。它只有 2MB 大小,对比动辄上 G 的数据库来说可谓袖珍。但这并不妨碍 Derby 功能齐备,支持几乎大部分的数据库应用所需要的特性。更难能可贵的是,依托于 ASF 强大的社区力量,Derby 得到了包括 IBM 和 Sun 等大公司以及全世界优秀程序员们的支持。这也难怪 Sun 公司会选择其 10.2.2 版本纳入到 JDK 6 中,作为内嵌的数据库。这就好像为 JDK 注入了一股全新的活力:Java 程序员不再需要耗费大量精力安装和配置数据库,就能进行安全、易用、标准、并且免费的数据库编程。在这一章中,我们将初窥 Java DB 的世界,来探究如何使用它编写出功能丰富的程序。

Hello, Java DB:内嵌模式的 Derby

既然有了内嵌(embedded)的数据库,就让我们从一个简单的范例开始,试着使用它吧。这个程序做了大多数数据库应用都可能会做的操作:在 DBMS 中创建了一个名为 helloDB 的数据库;创建了一张数据表,取名为 hellotable;向表内插入了两条数据;然后,查询数据并将结果打印在控制台上;最后,删除表和数据库,释放资源。

public class HelloJavaDB {

public static void main(String[] args) {

try { // load the driver

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

System.out.println("Load the embedded driver");

Connection conn = null;

Properties props = new Properties();

props.put("user", "user1"); props.put("password", "user1");

//create and connect the database named helloDB

conn=DriverManager.getConnection("jdbc:derby:helloDB;create=true", props);

System.out.println("create and connect to helloDB");

conn.setAutoCommit(false);

// create a table and insert two records

Statement s = conn.createStatement();

s.execute("create table hellotable(name varchar(40), score int)");

System.out.println("Created table hellotable");

s.execute("insert into hellotable values('Ruth Cao', 86)");

s.execute("insert into hellotable values ('Flora Shi', 92)");

// list the two records

ResultSet rs = s.executeQuery(

"SELECT name, score FROM hellotable ORDER BY score");

System.out.println("namettscore");

while(rs.next()) {

StringBuilder builder = new StringBuilder(rs.getString(1));

builder.append("t");

builder.append(rs.getInt(2));

System.out.println(builder.toString());

}

// delete the table

s.execute("drop table hellotable");

System.out.println("Dropped table hellotable");

rs.close();

s.close();

System.out.println("Closed result set and statement");

conn.commit();

conn.close();

System.out.println("Committed transaction and closed connection");

try { // perform a clean shutdown

DriverManager.getConnection("jdbc:derby:;shutdown=true");

} catch (SQLException se) {

System.out.println("Database shut down normally");

}

} catch (Throwable e) {

// handle the exception

}

System.out.println("SimpleApp finished");

}

}

随后,我们在命令行(本例为 Windows 平台,当然,其它系统下稍作改动即可)下键入以下命令:

清单 2. 运行 HelloJavaDB 命令

java –cp .;%JAVA_HOME%dblibderby.jar HelloJavaDB

图 1. HelloJavaDB 程序的执行结果

上述的程序和以往没什么区别。不同的是我们不需要再为 DBMS 的配置而劳神,因为 Derby 已经自动地在当前目录下新建了一个名为 helloDB 的目录,来物理地存储数据和日志。需要做的只是注意命名问题:在内嵌模式下驱动的名字应为 org.apache.derby.jdbc.EmbeddedDriver;创建一个新数据库时需要在协议后加入 create=true。另外,关闭所有数据库以及 Derby 的引擎可以使用以下代码:

清单 3. 关闭所有数据库及 Derby 引擎

DriverManager.getConnection("jdbc:derby:;shutdown=true");

如果只想关闭一个数据库,那么则可以调用:

清单 4. 关闭一个数据库

DriverManager.getConnection("jdbc:derby:helloDB;shutdown=true ");

这样,使用嵌入模式的 Derby 维护和管理数据库的成本接近于 0。这对于希望专心写代码的人来说不失为一个好消息。然而有人不禁要问:既然有了内嵌模式,为什么大多数的 DBMS 都没有采取这样的模式呢?不妨做一个小实验。当我们同时在两个命令行窗口下运行 HelloJavaDB 程序。结果一个的结果与刚才一致,而另一个却出现了错误,如 图 2 所示。

图 2. 内嵌模式的局限

错误的原因其实很简单:在使用内嵌模式时,Derby 本身并不会在一个独立的进程中,而是和应用程序一起在同一个 Java 虚拟机(JVM)里运行。因此,Derby 如同应用所使用的其它 jar 文件一样变成了应用的一部分。这就不难理解为什么在 classpath 中加入 derby 的 jar 文件,我们的示例程序就能够顺利运行了。这也说明了只有一个 JVM 能够启动数据库:而两个跑在不同 JVM 实例里的应用自然就不能够访问同一个数据库了。

鉴于上述的局限性,和来自不同 JVM 的多个连接想访问一个数据库的需求,下一节将介绍 Derby 的另一种模式:网络服务器(Network Server)。

网络服务器模式

如上所述,网络服务器模式是一种更为传统的客户端/服务器模式。我们需要启动一个 Derby 的网络服务器用于处理客户端的请求,不论这些请求是来自同一个 JVM 实例,还是来自于网络上的另一台机器。同时,客户端使用 DRDA(Distributed Relational Database Architecture)协议连接到服务器端。这是一个由 The Open Group 倡导的数据库交互标准。图 3 说明了该模式的大体结构。

由于 Derby 的开发者们努力使得网络服务器模式与内嵌模式之间的差异变小,使得我们只需简单地修改 清单 1 中的程序就可以实现。如清单 5所示,我们在 HelloJavaDB 中增添了一个新的函数和一些字符串变量。不难看出,新的代码只是将一些在上一节中特别指出的字符串进行了更改:驱动类为 org.apache.derby.jdbc.ClientDriver,而连接数据库的协议则变成了 jdbc:derby://localhost:1527/。这是一个类似 URL 的字符串,而事实上,Derby 网络的客户端的连接格式为:jdbc:derby://server[:port] /databaseName[;attributeKey=value]。在这个例子中,我们使用了最简单的本地机器作为服务器,而端口则是 Derby 默认的 1527 端口。

图 3. Derby 网络服务器模式架构

清单 5. 网络服务器模式下的 HelloJavaDB

public class HelloJavaDB {

public static String driver = "org.apache.derby.jdbc.EmbeddedDriver";

public static String protocol = "jdbc:derby:";

public static void main(String[] args) {

// same as before

}

private static void parseArguments(String[] args) {

if (args.length == 0 || args.length 1) {

return;

}

if (args[0].equalsIgnoreCase("derbyclient")) {

framework = "derbyclient";

driver = "org.apache.derby.jdbc.ClientDriver";

protocol = "jdbc:derby://localhost:1527/";

}

}

}

当然,仅仅有客户端是不够的,我们还需要启动网络服务器。Derby 中控制网络服务器的类是 org.apache.derby.drda.NetworkServerControl,因此键入以下命令即可。如果想了解 NetworkServerControl 更多的选项,只要把 start 参数去掉就可以看到帮助信息了。关于网络服务器端的实现,都被 Derby 包含在 derbynet.jar 里。

清单 6. 启动网络服务器

java -cp .;"C:Program FilesJavajdk1.6.0dblibderby.jar";

"C:Program FilesJavajdk1.6.0dblibderbynet.jar"

org.apache.derby.drda.NetworkServerControl start

相对应的,网络客户端的实现被包含在 derbyclient.jar 中。所以,只需要在 classpath 中加入该 jar 文件,修改后的客户端就可以顺利地读取数据了。再一次尝试着使用两个命令行窗口去连接数据库,就能够得到正确的结果了。如果不再需要服务器,那么使用 NetworkServerControl 的 shutdown 参数就能够关闭服务器。

更多

至此,文章介绍了 Java SE 6 中的新成员:Java DB(Derby),也介绍了如何在内嵌模式以及网络服务器模式下使用 Java DB。当然这只是浅尝辄止,更多高级的选项还需要在 Sun 和 Derby 的文档中寻找。在这一章的最后,我们将简单介绍几个 Java DB 的小工具来加快开发速度。它们都位于 org.apache.derby.tools 包内,在开发过程中需要获取信息或者测试可以用到。

• ij:一个用来运行 SQL 脚本的工具;

• dblook:为 Derby 数据库作模式提取(Schema extraction),生成 DDL 的工具;

• sysinfo:显示系统以及 Derby 信息的工具类;

java操作derby数据库和操作sql数据库有什么区别

import java.sql.ResultSet; //都是导入一些下面需要用到的类

String ConnStr="jdbc:microsoft:sqlserver://WINJUE:1433;DatabaseName=library";//jdbc连接数据库url

public sqlServer() {

try {

Class.forName(DBDriver).newInstance(); //加载SQLServer驱动程序,DBDriver是你上面的代码;

conn=DriverManager.getConnection(ConnStr,"sa","sa"); //和数据库建立连接,ConnStr里面的://WINJUE:1433;DatabaseName=library 分别是主机地址:端口号;你自己建的数据库(database)

}

catch(SQLException e) { //捕获SQL异常

System.out.println(e.getMessage()); //要是出现异常,捕获到后,这句代码会把异常的信息(出错的原因之类的)打印出来。

}

catch(Exception e) { //捕获异常,这个是总的,所以不能和上面的顺序颠倒,先小到大,我连ORACLE和MYSQL,这个我通常不要,只须捕获SQL异常就OL

System.out.println(e.getMessage());

}

}

public Connection getConn(){ //获取连接方法

return conn;

}

public void insert(String sql) {//增删改

try {

Statement stm=conn.createStatement(); 调用conn下的方法,创建Statement对象

stm.executeUpdate(sql);//调用Statement下的方法执行SQL语句

System.out.println("操作成功");

}

catch(Exception e){

System.out.println(e.getMessage()); //如上

}

}

public ResultSet query(String sql){ //查询

try{

Statement stm=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

rs=stm.executeQuery(sql); //如上

}

catch(Exception e){

System.out.println(e.getMessage());

}

return rs;

}

public static void main(String args[]){

sqlServer conn=new sqlServer(); //创建sqlServer,就是你上面的类,以便调用里面的方法

ResultSet rs=conn.query("select * from Orders"); //调用query方法,执行SQL语句后,把结果保存到结果集里

//conn.insert("delete from BookInfo where BookName =" +"\'悟空传\'");

//conn.insert("insert into BookInfo (BookID,BookName,Author,KeyWord) values (14445678,'悟空传','今何在','孙悟空')");

try{

while(rs.next()){ //循环,判断结果集里的记录,一条条往下走,是否还有下一条记录,若是返回真,继续走

System.out.print(rs.getString("OrderID"));

//System.out.print(rs.getString("U_age"));

}

rs.close() ; //关闭结果集

}

catch (Exception e){

System.out.println(e.getMessage());

}

}

}

注:

TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。

TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至能进行特定定位,例如移至列表中的第四个记录或从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。

TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 相同,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。

最近在学java,但是一直连接不上derby数据库,请大神帮忙,最好能有详细步骤。

1,下载并安装Derby:

下载地址: /derby_downloads.html,下载最新版本。

我用的是10.5.3.0。

解压缩到任意文件夹,我的是:E:\Java\Joy\derby

2,配置环境变量:

建立DERBY_HOME,值:E:\Java\Joy\derby\db- derby-10.5.3.0-bin\db-derby-10.5.3.0-bin

在Path加入:%DERBY_HOME%\bin

在CLASSPATH加入:%DERBY_HOME%\lib \derby.jar;%DERBY_HOME%\lib\derbyclient.jar;%DERBY_HOME%\lib\derbytools.jar;%DERBY_HOME%\lib\derbynet.jar

3,测试看看Derby安装成功没有

开始—Run—CMD

运行 sysinfo

如果安装成功,将会看到相关信息,下面是截取的部分信息。

——— Derby 信息 ——–

JRE – JDBC: Java SE 6 – JDBC 4.0

[E:\Java\Joy\derby\db-derby-10.5.3.0-bin\db-derby-10.5.3.0-bin\lib\derby.jar] 10

.5.3.0 – (802917)

[E:\Java\Joy\derby\db-derby-10.5.3.0-bin\db-derby-10.5.3.0-bin\lib\derbytools.ja

r] 10.5.3.0 – (802917)

[E:\Java\Joy\derby\db-derby-10.5.3.0-bin\db-derby-10.5.3.0-bin\lib\derbynet.jar]

10.5.3.0 – (802917)

[E:\Java\Joy\derby\db-derby-10.5.3.0-bin\db-derby-10.5.3.0-bin\lib\derbyclient.j

ar] 10.5.3.0 – (802917)

4,创建和使用数据库

打开命令行,进入想要放置数据库的目录,我的是:E:\Java\Joy \derby\Derby_data

然后输入ij

将会看到:

ij 版本 10.5

ij

接下来就可以创建数据库了。

例:

创建firstdb数据库:

ij connect ‘jdbc:derby:firstdb;create=true’;

连接firstdb数据库:

ij connect ‘jdbc:derby:firstdb’;

查询数据库等操作,只需要输入相应的Sql语句即可。

创建一个table:

create table firsttable(id int primary key, name varchar(20));

插入数据:

insert into firsttable values(1, ‘Hotpepper’);

在命令行测试一下:

select * from firsttable;

结果如下:

ID |NAME

——————————–

1 |Hotpepper

其它命令

断开连接:

ij disconnect;

退出ij:

ij exit;

5,在Java程序中使用Derby

首先要把相关的Derby jar包加进来(Build Path)。

把derby.jar加进来,如果没有加进来会出现 “java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver”错误

好了,下面写JAVA代码进行测试:

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class Test {

private static String driver = “org.apache.derby.jdbc.EmbeddedDriver”;

private static String protocol = “jdbc:derby:”;

String dbName = “E:\\Java\\Joy\\derby\\Derby_data\\firstdb”;

static void loadDriver() {

try {

Class.forName(driver).newInstance();

System.out.println(“Loaded the appropriate driver”);

} catch (Exception e) {

e.printStackTrace();

}

}

public void doIt() {

Connection conn = null;

Statement s = null;

ResultSet rs = null;

System.out.println(“starting”);

try {

conn = DriverManager.getConnection(protocol + dbName

+ “;create=true”);

} catch (SQLException e) {

e.printStackTrace();

}

System.out.println(“Connected to and created database ” + dbName);

try {

s=conn.createStatement();

rs=s.executeQuery(“select * from firsttable”);

while (rs.next()) {

System.out.println(rs.getInt(1));

System.out.println(rs.getString(2));

}

} catch (SQLException e1) {

e1.printStackTrace();

}

try {

conn.close();

conn = null;

s.close();

s = null;

rs.close();

rs = null;

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

Test t = new Test();

t.loadDriver();

t.doIt();

}

}

OK,完成了。

—————————————————-

附:复制粘贴Derby数据库:

备份Derby数据库(derby-10.5.3.0)

小试了一下,很简单的,就复制粘贴就好了。

找到想要复制的数据库文件夹,比如:

C:\Program Files\SQuirreL SQL Client\firstdb

我们就把整个firstdb文件夹复制下来,然后粘贴到想要粘贴的地方。

就那么简单。

以上是我突发奇想试试看,没想到就成了。在网上搜了一下,貌似derby备份的方法不是这样的,而这种方法莫非是传说中的“热备份”?

6,在DbVisualizer中使用Derby

选择Database时选择到数据库的目录。

如何用eclipse连接derby数据库

下载Eclipse的Derby插件,包括:derby_core_plugin derby_ui_plugin

解压缩并复制到eclipse目录下。重启Eclipse目录。鼠标选择项目,然后鼠标右键,选择Properties说明安装成功。

为项目增加Derby插件支持。选择Add Apache Derby nature。

然后启动derby数据库服务器。启动derby数据库客户端ij。通过ij创建并连接到服务器端:

connect 'jdbc:derby://localhost:1527/helloworld;create=true;username=test;password=test';

连接到名为helloworld的数据库

地址为:localhost:1527

create=true,如果不存在这个数据库,就在服务器端创建

username=test;password=test,用户名/密码为test,如果是新建数据库将新建用户和密码。

Derby的SQL脚本:create.sql,内容:

create table books(

id int generated always as identity,

name varchar(32) not null,

PRICE DECIMAL(6,2),

constraint P_Key_1 primary key (id)

);

执行脚本的命令:

run 'create.sql';

Java语言运用derby数据库实现成绩查询管理系统,百分急求可追加

新安装了

jdk

6

的程序员们也许会发现,除了传统的

bin、jre

等目录,jdk

6

新增了一个名为

db

的目录。这便是

java

6

的新成员:java

db。这是一个纯

java

实现、开源的数据库管理系统(dbMS),源于

Apache

软件基金会(asf)名下的项目

Derby。它只有

2MB

大小,对比动辄上

G

的数据库来说可谓袖珍。但这并不妨碍

Derby

功能齐备,支持几乎大部分的数据库应用所需要的特性。更难能可贵的是,依托于

asf

强大的社区力量,Derby

得到了包括

ibm

Sun

等大公司以及全世界优秀程序员们的支持。这也难怪

Sun

公司会选择其

10.2.2

版本纳入到

jdk

6

中,作为内嵌的数据库。这就好像为

jdk

注入了一股全新的活力:java

程序员不再需要耗费大量精力安装和配置数据库,就能进行安全、易用、标准、并且免费的数据库编程。在这一章中,我们将初窥

java

db

的世界,来探究如何使用它编写出功能丰富的程序。

怎么连接已有的derby数据库

1.程序中创建数据库时,如果没有指定目录,会默认在项目的根目录下,生成一个以derby数据库名的目录,如:

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

System.out.println("Load the embedded driver");

Connection conn = null;

Properties props = new Properties();

props.put("user", "test");

props.put("password", "test");

// create and connect the database named helloDB

conn = DriverManager.getConnection(

"jdbc:derby:testDB;create=true", props);

System.out.println("create and connect to testDB");

conn.setAutoCommit(true);

其中:“jdbc:derby:testDB;create=true”,则在项目根目录下生成一个testDB目录。

2.下载安装coolsql后,操作如下:

1新建一个书签,选择驱动

找到derby-10.9.1.0.jar(或其他版本jar),选择下面的:org.apache.derby.jdbc.EmbeddedDriver 。

2下一步,输入用户名、密码,填写程序中赋值的:test,test;下面的数据库名字填写时,要注意,写系统的绝对路径,如:E:\eclipse3.7\wordspace_mvn\staticize\testDB(staticize为项目根目录),下面的url:jdbc:derby:E:\eclipse3.7\wordspace_mvn\staticize\testDB(自动填写)。

3保持连接就可以了。

关于java连接derby和Java连接mysql的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。