本章都是使用如下的数据库
二、JDBC的编程步骤(以mysql为例子)
如下:
1、加载数据库驱动(jar文件):每个服务商提供包
Class.forName("com.mysql.jdbc.Driver");//加载包为mysql软件包
其他数据库软件加载包如下:
- Oracle数据库:oracle.jdbc.driver.OracleDriver
- SQL Server2008数据库:com.microsoft.jdbc.sqlserver.SQLServerDriver
- DB2数据库:com.ibm.db2.jdbc.Net.DB2Driver
2、获得数据库链接
形如:
conn= DriverManager.getConnection( "url" , "user" , "password" );
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/cxg2850105498","root","cxg200888");//这里是mysql数据库链接方式
- Oracle数据库:jdbc:oracle:thin:@localhost:1521:orcl(为数据库的SID) , sUsr(用户) , sPwd(密码)
- SQL Server2008数据库:jdbc:sqlserver://localhost:1433;databasename=stu, sa(用户), sPwd(密码)
- DB2数据库:jdbc:db2://localhost:5000/sample(为你的数据库名),sUsr(用户), sPwd(密码)
3、创建语句
4、执行查询
5、遍历结果集合
6、关闭数据库
以mysql为例子:
package com;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Statement;
public class Test {
public static void main(String []args){
java.sql.Connection conn=null;
//1.加载注册驱动类
try {
Class.forName("com.mysql.jdbc.Driver");//加载驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//2.创建数据库链接
try {
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/cxg2850105498","root","cxg200888");
} catch (SQLException e) {
e.printStackTrace();
}
//3.创建语句
String sql="select id,name,email from c";
try {
Statement s=(Statement) conn.createStatement();//Statement 接口需要通过Connection 接口进行实例化操作
//4.执行SQL查询
ResultSet r=s.executeQuery(sql);
//5.遍历结果集
while(r.next()){
//r.next()判断是否还有数据
//按1、2、3顺序取数据库的值
int id=r.getInt(1);
String name=r.getString(2);
String email=r.getString(3);
System.out.println(id+" "+name+" "+email);
}
} catch (SQLException e) {
e.printStackTrace();
}
//6.关闭数据库
finally{
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
通过SELECT 语句,可以查询数据中的内容,在mysql 中直接查询的时候可以发现将返回全部的查询结果给用户看,那么对于程序的操作中也是一样的,所有的查询结果要返回到程序处进行输出查看,那么程序通过ResultSet 接口保存全部的查询结果,通过Statement 接口中的executeQuery()方法查询。
查询之后的数据需要分别的取出。通过 next ()方法找到返回的每一行数据,每一行中各个列的数据需要通过getXxx()方法取得,例如:
取得整型:getInt()
取得字符串:getString()
取得日期:getDate()
取得小数:getFloat()
三、第一种改进JDBC
1、将驱动和数据库链接封装在DBUtil中(创建DBUtil.java类)
package com;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
public class DBUtil {
//定义成不可修改的
private static String driver;
private static String url;
private static String username;
private static String password;
//把值都按要求填入
static {
driver="com.mysql.jdbc.Driver";
url="jdbc:mysql://localhost:3306/cxg2850105498";
username="root";
password="cxg200888";
}
//打开数据库
public static Connection open() {
try {
//1、注册加载驱动
Class.forName(driver);
//2、链接数据库
return (Connection) DriverManager.getConnection(url,username,password);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//关闭数据库
public static void close(Connection conn) {
if(conn!=null)
{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2、将Test.java修改
package com;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
public class Test {
public static void main(String []args){
Connection conn=DBUtil.open();
//3.创建语句
String sql="select id,name,email from c";
//4.执行SQL查询
try {
Statement s=(Statement) conn.createStatement();
ResultSet r=s.executeQuery(sql);
//5.遍历结果集
while(r.next()){
//r.next()判断是否还有数据
int id=r.getInt(1);
String name=r.getString(2);
String email=r.getString(3);
System.out.println(id+" . "+name+" || "+email);
}
} catch (SQLException e) {
e.printStackTrace();
}
//6、关闭数据库
finally{
DBUtil.close(conn);
}
}
}
四、第二种改进JDBC
1、将加载注册和数据库链接弄到config.properties配置文件里
不能有任何空格逗号
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/cxg2850105498
username=root
password=cxg200888
2、DBUtil.java
package com;
import java.io.FileNotFoundException;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import com.mysql.jdbc.Connection;
public class DBUtil {
//定义成不可修改的
private static String driver;
private static String url;
private static String username;
private static String password;
//把值都按要求填入
static {
//此对象是用于加载properties文件数据
ResourceBundle rb=ResourceBundle.getBundle("Config");
driver=rb.getString("driver");
url=rb.getString("url");
username=rb.getString("username");
password=rb.getString("password");
}
//打开数据库
public static Connection open() {
try {
//注册加载驱动
Class.forName(driver);
//链接数据库
return (Connection) DriverManager.getConnection(url,username,password);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//关闭数据库
public static void close(Connection conn) {
if(conn!=null)
{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}