java闲谈(超超)jdbc应用

来源:互联网 发布:海南教务网络管理系统 编辑:程序博客网 时间:2024/05/09 06:46

开发JDBC应用:

企业的开发离不开数据库的操作,Java如何访问数据库也是一个难点,我读书的时候初学Java,试了好多次才能成功的向数据库中插入了数据.以下讲解在普通的项目中用JDBC访问MySQL 5.

0数据库,用别的数据库也可以完成可以试试.只是建表语句略微不同eg>Derby数据库.

1.创建数据库表格:

安装并启动MySQL数据库以及获得对应的JDBC驱动jar文件,或直接使用Derby数据库.

对于多数的项目来说,基本上前期的工作就是进行需求分析,分析的结果一是功能模块,二可能就是实体或者对象,实体最终就会映射到数据库设计中去.所以这里先从创建数据库开始.

首先需要创建一个学生表,建表的SQL如下:

create table Student(

       id int not null auto_increment,

       username varchar(200) not null,

       password varchar(20) not null,

       age int,

       primary key (id)

)ENGINE=MyISAM DEFAULT CHARSET=GBK

注意:这个是MySQL数据库的建表语句.这个表有一个自增的ID列作为主键,还有用户名,密码和年龄三个列,最后哦一句ENGINE=MyISAM DEFAULT CHARSET=GBK指定了表的默认字符集是GBK中文字符,这一句是MySQL特有的语法.MyEclipse Database Explorer透视图的DB Browser视图中打开mysql5这个连接,展开并选中test数据库,然后打开SQL编辑器,编辑上述代码,然后运行(Ctrl + F9)或按钮创建这个表.

如果要用Derby数据库做练习,对应的SQl:

create table Student(

       id int not null generated always as identity,

       username varchar(200) not null,

       password varchar(20) not null,

       age int,

       primary key (id)

)

需要指出的是,并非所有数据库都支持自增类型的主键,而且不同的数据库实现主键生成的关键字也是没有统一规定的,例如Oracle使用一个叫sequence的概念来生成主键.那么通用的不带主键自增的建表语句如下所示:

create table Student(

       id int not null,

       username varchar(200) not null,

       password varchar(20) not null,

       age int,

       primary key(id)

)

Eclipse建表的操作过程如下图所示:

 

当然对于MySQL数据库来说,也可以用MySQL-Front,Navicat或者SQl-YOG等工具来方便的建表,所以上述内容也是可能的操作之一.

2.创建Java项目:

创建一个名为JDBCHelloWorldJava项目.首先确保已经打开了MyEclipse Java Enterprise透视图,然后从菜单栏选择File > New > Java Project,接着会打开New Java Project向导对话框,Project name中输入JDBCHelloWorld,点击Finish按钮关闭对话框,这样一个Java项目就建立完毕了.稍等片刻会弹出一个切换透视图的对话框,为了避免造成更多的麻烦,我们一般选择No按钮即可.

3.添加JDBC驱动到Build Path

要连接数据库必须要将JDBC驱动类库加入到项目的Build Path,不同的数据库的JDBC驱动类库文件是不一样的.首先需要找到对应的驱动,MySQL的可以从官方网站下载,MyEclipse Derby的则位于Windows当前用户的配置文件目录下面,例如C:/Documents and Settings/BeanSoft/myeclipse/libs/derby_10.2.2.0/derbyclient.jar.Windows的文件浏览器中选中文件并复制到剪贴板(选择菜单编辑>复制,或者在文件上点击右键选择菜单复制,或者按下组合键Ctrl + C),然后点击任务栏切换到MyEclipse的窗口,Package Explorer视图中选中刚刚创建的JDBCHelloWorld项目节点的上下文菜单中选择Paste,或者按下快捷键Ctrl + V,这时候驱动程序的JAR文件例如mysql-connector-java-3.1.11-bin.jar就复制并添加到了当前项目中,点击一下来选中这个jar文件,然后单击鼠标右键,选择菜单Build Path>Add to Build Path就可以将这个jar文件加入Build Path中如下图所示:

 



 

4.编写JDBC访问类:

至此开发环境已经准备好了,所缺的就是写Java程序来访问数据库了.

接着选择菜单File > New > Class,然后(New Java Class)新建类的对话框就出现了,接着在Name输入框中输入JDBCHelloWorld,点击完成.接着将编辑器里面的代码修改程如下:

/*

*     JDBCHelloWorld.java

*     版权所有 2009 焦俊(jiaojun2lnn@163.com)

*     Blog: http://www.blogjava.net/bensoft/

*     本代码协议: GPL

*/

import java.sql.*;

/**

*     第一个JDBCHelloWorld程序,数据库访问MySQL.

*     @author jiaojun2lnn@163.com

*     @version 0.4 2009-12-06

*/

public class JDBCHelloWorld {

       public static void main(String[] args){

              //1.注册驱动

              try{

       Class.forName(“com.mysql.jdbc.Driver”);

}catch(ClassNotFoundException e){

       // TODO Auto-generated catch block

       e.printStackTrace();

}//MySQL的驱动

//先定义变量,后使用和关闭

Connection conn = null;//数据库连接

Statement stmt = null;//数据库表达式

ResultSet rs = null;//结果集

try{

       //2.获取数据库的连接

       conn = java.sql.DriverManager.getConnection(“jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK”,”root”,”java”);//root是用户名,java是密码

//3.获取表达式

stmt = conn.createStatement();

//执行插入数据的SQL

int row = stm.executeUpdate(“insert into Student(username,password,age) values(‘张三’,’1234’,20)”);

System.out.println(“插入了 ” + row);

//4.执行SQL

rs = stmt.executeQuery(“select * from Student”);

//5.显示结果集里面的数据

while(rs.next()){

       System.out.println(“编号=” + rs.getInt(1));

       System.out.println(“学生姓名=” + rs.getString(“username”));

       System.out.println(“密码=” + rs.getString(“password”));

       System.out.println(“年龄” + rs.getString(“age”));

}

//执行删除数据的SQL,被删除的记录的ID7

row = stmt.executeUpdate(“delete from student where id = 7”);

System.out.println(“删除了 ” + row);

}catch(SQLException e){

       e.printStackTrace();

}finally{

       //6.释放资源,建议放在finally语句中确保都被关闭掉了

       try{

              rs.close();

}catch(SQLException e){

 

}

try{

       stmt.close();

}catch(SQLException e){

 

}

try{

       conn.close();

}catch(SQLException e){

 

}

}

}

}

jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK 这个是连接到MySQL数据库的JDBC URL,关于这段代码中的?useUnicode=true&characterEncoding=GBK是说以支持国际字符集(Unicode)的方式并以GBK中文字符集连接到数据库,如果安装时候选择的数据库的默认字符集是UTF-8,那么这个地方把GBK换成UTF-8就可以了.当然更快的办法是你将这段代码直接复制,然后在MyEclipse点击菜单Edit > Paste就可以生成这个类文件了.当你的代码编写完毕后,MyEclipse会自动将代码编译程类文件.接下来就可以运行写好的类了,选择菜单Run > Run或者按下快捷键Ctrl + F11,就可以看到Eclipse会自动调用Java解释器,然后在Console视图中输出:
 

这个程序就执行成功了,粗体部分为刚刚插入的数据.再执行依次将会输出两行数据:
 

可以看到ID是自动生成的.

如果要连接到Derby数据库,这段程序稍作修改即可.

驱动字符串改为”org.apache.derby.jdbc.ClientDriver”

URL改为:”jdbc:derby://localhost:15237/myeclipse”,”classiccars”,”classiccars”

因为实际工作中很多公司因为项目周期长的原因,因此纯JDBC方式的数据库访问代码可能会经常看到.

注意:此内容并不能代替您来学习JDBC,请阅读数据等来获取更多的信息.关于JDBC分页,PreparedStatement等高级内容可以从Google搜索.

参考资料:

http://www.blogjava.net/beansoft/archive/2007/10/23/155318.html 基于_JDBC_2.0_驱动的分页代码实现