JDBC操作步骤及数据库连接操作
2017-05-02 17:57
387 查看
1.加载数据库驱动程序:各个数据库都会提供JDBC的驱动程序开发包,直接把JDBC操作所需要的开发包(一般为*.jar或*.zip)直接配置到classpath路径即可。
2.连接数据库:根据各个数据库的不同连接的地址也不同,此连接地址将由数据库厂商提供,一般在使用JDBC连接数据库的时候都要求用户输入数据库连接的用户名和密码,用户在取得连接之后才可以对数据库进行查询或更新的操作。
3.使用语句进行数据库操作:数据库操作分为更新和查询两种操作,除了可以使用标准的SQL语句之外,对于各个数据库也可以使用其自己提供的各种命令。
4.关闭数据库连接:数据库操作完毕之后需要关闭连接以释放资源。
二、配置数据库的驱动程序
1.下载驱动:http://www.mysql.com/downloads/connector/j/
2.配置环境变量:在classpath中添加驱动路径(例如我的路径是D:\MySQL-connector-Java-5.1.21-bin.jar;);
三、加载驱动
[java]
view plain
copy
print?
public class connector {
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; //定义MySQL数据库驱动程序
public static void main(String[] args) {
try {
Class.forName(DBDRIVER); //加载驱动程序
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
![](http://static.blog.csdn.net/images/save_snippets.png)
public class connector { public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; //定义MySQL数据库驱动程序 public static void main(String[] args) { try { Class.forName(DBDRIVER); //加载驱动程序 } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
四、连接及关闭数据库
1.使用DriverManager类进行连接操作,DriverManager类的常用方法:
(1)通过连接地址连接数据库
public static Connection getConnection(String url) throws SQLException
(2)通过连接地址连接数据库同时输入用户名和密码
public static Connection getConnection(String url, String user, String password) throws SQLException
2.DriverManager说明:
(1)在DriverManager中,提供的主要操作是得到一个数据库的连接,getConnection()方法就是取得连接对象,此方法返回的类型是Connection对象,不管使用那种方式连接,都必须提供一个数据库的连接地址,如果在连接数据库的时候需要用户名和密码,则还需要将用户名和密码设置上。MySQL数据库的连接地址格式如下:jdbc:mysql://IP地址:端口号/数据库名称
(2)数据库连接地址的形式由三部分组成:
a.jdbc协议:JDBC URL中的协议总是jdbc;
b.子协议:驱动程序名和数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称,例如:mysql;
c.子名称:一种标识数据库的方法。必须遵循"/主机名:端口/子协议"的标准URL命名约定,例如://localhost:3306/Joywy.
3.Connection
通过DriverManager取得Connection对象之后,实际上就表示数据库连接上了,连接上数据库之后就可以进行数据库的更新及查询操作,但是操作的最后数据库的连接必须关闭。
连接数据库代码如下:
[java]
view plain
copy
print?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionDemo{
//定义MySQL驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:
4000
mysql://localhost:3306/xiaowei";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "android";
public static void main(String[] args){
//数据库连接
Connection con = null;
try{
//加载驱动
Class.forName(DBDRIVER);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
try{
con = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
}catch(SQLException e){
e.printStackTrace();
}
System.out.println(con);
try{
//数据库关闭
con.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
![](http://static.blog.csdn.net/images/save_snippets.png)
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionDemo{ //定义MySQL驱动程序 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; //定义MySQL数据库的连接地址 public static final String DBURL = "jdbc:mysql://localhost:3306/xiaowei"; //MySQL数据库的连接用户名 public static final String DBUSER = "root"; //MySQL数据库的连接密码 public static final String DBPASS = "android"; public static void main(String[] args){ //数据库连接 Connection con = null; try{ //加载驱动 Class.forName(DBDRIVER); }catch(ClassNotFoundException e){ e.printStackTrace(); } try{ con = DriverManager.getConnection(DBURL, DBUSER, DBPASS); }catch(SQLException e){ e.printStackTrace(); } System.out.println(con); try{ //数据库关闭 con.close(); }catch(SQLException e){ e.printStackTrace(); } } }
五、数据库操作
1.Statement接口
此接口通过使用Connection接口中的createStatement()方法实例化,此接口定义了一下方法:
No. | 方法 | 类型 | 描述 |
1 | Int executeUpdate(String sql)throws SQLException | 普通 | 执行数据库更新的SQL语句,例如:INSERT、UPDATE、DELETE等语句,返回更新的记录数 |
2 | ResultSet executeQuery(String sql)throws SQLException | 普通 | 执行数据库查询操作,返回一个结果集对象 |
3 | void addBatch(String sql)throws SQLException | 普通 | 增加一个待执行的SQL语句 |
4 | int[] executeBatch()throws SQLException | 普通 | 批量执行SQL语句 |
5 | void close()throws SQLException | 普通 | 关闭Statement操作 |
6 | Boolean execute(String sql)throws SQLException | 普通 | 执行SQL语句 |
使用SQL中的SELECT语句可以将数据库的全部结果查询出来,在JDBC的操作中数据库的所有查询记录将使用ResultSet进行接收,并使用ResultSet显示内容。
3.PreparedStatement接口
PreparedStatement接口是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement在操作时,是先在数据表之中准备好一条SQL语句,但是此SQL语句的具体内容暂时不设置,而是之后再进行设置,以插入数据为例,使用PreparedStatement插入数据时,数据表中的指针首先指向最后一条数据之后,但是里面的内容是不知道的,而是等待用户分别设置的。
注意:设置日期格式的问题,在PreparedStatement中定义了setData(),此方法可以设置日期内容,但是此方法使用时,后面的Data类型变量是java.sql.Data,而不是java.util.Data,所以如果要想将一个java.util.Data类型的内容变为java.sql.Date类型的内容应该使用如下的语句形式:
[java]
view plain
copy
print?
String birthday = "2007-08-27" //生日
java.util.Date temp = null; //声明一个Date对象
//通过SimpleDataFormat类将一个字符串变为java.util.Date类型
temp = new SimpleDataFormat("yyyy-MM-dd").parse(birthday);
//通过java.util.Data取出具体的日期数,并将其变为java.sql.Data类型
java.sql.Data bir = new java.sql.Data(temp.getTime());
![](http://static.blog.csdn.net/images/save_snippets.png)
String birthday = "2007-08-27" //生日 java.util.Date temp = null; //声明一个Date对象 //通过SimpleDataFormat类将一个字符串变为java.util.Date类型 temp = new SimpleDataFormat("yyyy-MM-dd").parse(birthday); //通过java.util.Data取出具体的日期数,并将其变为java.sql.Data类型 java.sql.Data bir = new java.sql.Data(temp.getTime());
代码如下:
DBHelper.java
[java]
view plain
copy
print?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class DBHelper {
public static final String DBDRIVER = "com.mysql.jdbc.Driver";
public static final String DBURL = "jdbc:mysql://localhost:3306/test";
public static final String DBUSER = "root";
public static final String DBPASS = "1111";
public static Connection getConnection(){
Connection conn = null;
try {
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static void save(){
Connection con = getConnection();
String sql = "insert into Info values(?, ?, ?)";
PreparedStatement psmt = null;
try {
psmt = con.prepareStatement(sql);
psmt.setString(1, "123");
psmt.setString(2, "12");
psmt.setInt(3, 3);
int count = psmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(psmt != null){
try {
psmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public static void delete(){
Connection con = getConnection();
String sql = "delete from Info where id=?";
PreparedStatement psmt = null;
try {
psmt = con.prepareStatement(sql);
psmt.setString(1, "10330070");
int count = psmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(psmt != null){
try {
psmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(con != null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static void update(){
Connection con = getConnection();
String sql = "update Info set age = ? where id = ?";
PreparedStatement psmt = null;
try {
psmt = con.prepareStatement(sql);
psmt.setInt(1, 22);
psmt.setString(2, "111313");
int count = psmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(psmt != null){
try {
psmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public static List<Info> query(){
List<Info> list = new ArrayList<Info>();
Connection con = getConnection();
String sql = "select * from Info";
PreparedStatement psmt = null;
ResultSet rs = null;
try {
psmt = con.prepareStatement(sql);
rs = psmt.executeQuery();
while(rs.next()){ //依次取出数据
Info info = new Info();
info.setId(rs.getString("id"));
info.setPass(rs.getString("pass"));
info.setAge(rs.getInt("age"));
System.out.println(info.getId() +"\t" + info.getPass() + "\t" + info.getAge());
list.add(info);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(psmt != null){
try {
psmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return list;
}
public static void main(String[] args){
System.out.println(query().get(0).getAge());
}
}
![](http://static.blog.csdn.net/images/save_snippets.png)
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class DBHelper { public static final String DBDRIVER = "com.mysql.jdbc.Driver"; public static final String DBURL = "jdbc:mysql://localhost:3306/test"; public static final String DBUSER = "root"; public static final String DBPASS = "1111"; public static Connection getConnection(){ Connection conn = null; try { Class.forName(DBDRIVER); conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); } catch (Exception e) { e.printStackTrace(); } return conn; } public static void save(){ Connection con = getConnection(); String sql = "insert into Info values(?, ?, ?)"; PreparedStatement psmt = null; try { psmt = con.prepareStatement(sql); psmt.setString(1, "123"); psmt.setString(2, "12"); psmt.setInt(3, 3); int count = psmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally{ if(psmt != null){ try { psmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(con != null){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } } public static void delete(){ Connection con = getConnection(); String sql = "delete from Info where id=?"; PreparedStatement psmt = null; try { psmt = con.prepareStatement(sql); psmt.setString(1, "10330070"); int count = psmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally{ if(psmt != null){ try { psmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(con != null){ try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public static void update(){ Connection con = getConnection(); String sql = "update Info set age = ? where id = ?"; PreparedStatement psmt = null; try { psmt = con.prepareStatement(sql); psmt.setInt(1, 22); psmt.setString(2, "111313"); int count = psmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally{ if(psmt != null){ try { psmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(con != null){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } } public static List<Info> query(){ List<Info> list = new ArrayList<Info>(); Connection con = getConnection(); String sql = "select * from Info"; PreparedStatement psmt = null; ResultSet rs = null; try { psmt = con.prepareStatement(sql); rs = psmt.executeQuery(); while(rs.next()){ //依次取出数据 Info info = new Info(); info.setId(rs.getString("id")); info.setPass(rs.getString("pass")); info.setAge(rs.getInt("age")); System.out.println(info.getId() +"\t" + info.getPass() + "\t" + info.getAge()); list.add(info); } } catch (Exception e) { e.printStackTrace(); }finally{ if(rs != null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(psmt != null){ try { psmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(con != null){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } return list; } public static void main(String[] args){ System.out.println(query().get(0).getAge()); } }
Info.java
[java]
view plain
copy
print?
public class Info {
private String id;
private String pass;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
![](http://static.blog.csdn.net/images/save_snippets.png)
public class Info { private String id; private String pass; private int age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }注:
(1)一般来说,我会习惯使用PreparedStatement对数据库进行操作。PreparedStatement是预编译方式的,在执行SQL语句的时候效率就要高一些,还有就是PreparedStatement可以更好地避免SQL注入问题;在拼接sql语句时,采用PreparedStatement可以有效地减少出错的几率;PreparedStatement是Statement的一个子类,理所当然地PreparedStatement对Statement有一定的扩展,在性能方面有一定的提高。
(2)在开发中是不能直接使用"SELECT * FROM user",因为这样在查询的时候并不能明确的表示要取的内容是什么,所以开发中查询时肯定要明确地写出需要查找的列。
相关文章推荐
- 学习笔记_JDBC_1_Demo1_连接数据库的基本操作和步骤
- JDBC连接数据库操作步骤(JAVA)
- Java中使用JDBC连接数据库操作的步骤
- Java数据库编程---JDBC操作步骤及数据库连接操作
- 传智播客JavaWeb day10-jdbc操作mysql、连接数据库六大步骤
- JDBC操作步骤及数据库连接操作
- JDBC 连接mysql, oracle, sqlservice数据库操作步骤
- 学习笔记_JDBC_1_Demo1_连接数据库的基本操作和步骤
- JDBC操作步骤及数据库连接操作
- jdbc连接数据库操作步骤
- java数据库编程--JDBC操作步骤以及数据库连接
- 学习笔记:jdbc连接、操作数据库SQL Server 2008 ——MyEclipse web示例
- 完整java开发中JDBC连接数据库代码和步骤
- JDBC 连接数据库的 基本操作 增 ,查
- 完整java开发中JDBC连接数据库代码和步骤
- jdbc 连接数据库并进行操作相关代码
- 完整java开发中JDBC连接数据库代码和步骤
- 完整java开发中JDBC连接数据库代码和步骤
- JDBC连接数据库详细步骤及代码
- 完整java开发中JDBC连接数据库代码和步骤