JAva jdbc接続データベース(mysqlで接続)
10146 ワード
一、JDBC紹介
Javaデータベース接続(Java Database Connectivity、略称JDBC)は、Java言語でクライアント・プログラムがデータベースにアクセスする方法を規範化するアプリケーション・インタフェースであり、データベース内のデータのクエリーや更新などの方法を提供します.JDBCもSun Microsystemsの商標です.JDBCはリレーショナル・データベース向けです.
1、JDBCアーキテクチャ:JDBC APIは2層と3層の処理モデルによるデータベースアクセスをサポートするが、一般的なJDBCアーキテクチャは2層からなる:JDBC API:アプリケーションによるJDBCの管理接続を提供する;JDBC Driver API:JDBCのドライブ接続管理をサポートする;JDBC APIのドライバマネージャとデータベース固有のドライバを使用して、異機種データベースへの透過的な接続を提供します.JDBCドライバマネージャは、複数の異機種データベースに接続された複数の同時ドライバをサポートする正しいドライバが各データソースにアクセスできることを保証します.以下に、ドライバマネージャ側のJDBCドライバとJavaアプリケーションの場所を示す構造図を示します.
2、一般的なJDBCコンポーネント:JDBC APIは以下のインタフェースとクラスを提供している:DriverManager:このクラスはデータベースドライバのリストを管理し、内容がJavaアプリケーションから使用される通信サブプロトコルから正しいデータベースドライバの接続要求に合致するかどうか、JDBCが一定のサブプロトコルの最初のドライブでデータベース接続を確立するために使用されることを識別する.Driver:このインタフェースはデータベース・サーバと通信し、ドライバ・オブジェクトと直接通信することはめったにありません.逆に、Driver Managerのオブジェクトを使用して、このタイプのオブジェクトを管理します.ドライバ・オブジェクトの作業に関する詳細も抽象化します.Connection:このインタフェースはデータベースに接触するすべての方法で、接続オブジェクトは通信コンテキストを表します.すなわち、データベース内のすべての通信は一意の接続オブジェクトを通じています.Statement:このインタフェースを使用して作成されたオブジェクトのSQL文をデータベースにコミットし、一部の派生インタフェースはストレージ・プロシージャを実行するパラメータを受け入れる.ResultSet:これらのオブジェクトはデータベースから保存された後、Statementオブジェクトを使用したSQLクエリを実行してデータを取得し、反復器としてデータを移動できます.SQLException:このクラスの処理はデータベースアプリケーションで発生したエラーです.
二、JDBC接続に必要な基本知識
1、データベースの基本操作、
eg:Mysqlのインストールと基本操作(insert,delete,update,query)
2、java開発ツールの使用、
eg:Eclipse/MyEclipse(mysql-connector-java-5.0.3-bin.jarのインポートを含む)
三、JDBCの接続及びコードデモ
1、JDBC接続ツール類
1)、Configuration.java:.xmlファイルからデータベースの構成情報を接続できます.dom 4 j-1.6.1.jarパッケージを導入する必要があります.
2)、db.xml:データベースの構成情報を保存する
3)、ConnectionFactory.java:JDBC接続ファクトリメソッドの1つ
4)、ConnectionFactory 2.java:JDBC接続ファクトリメソッドその2
5)、User.java:データベーステーブルuserのidとnameのbeanクラスを定義します.ここでidは自動的に増加します.
6)、UserDao.java:userテーブルの操作クラス、insert、delete、update、queryなどの方法を実現
2、JDBC接続のテストクラス
1)、TestJdbc.java:データベーステストクラス
三、JDBC接続まとめ
JDBC操作の基本手順は次のとおりです.
1、Connectionオブジェクトを作成し、SQLクエリーコマンド文字列を入力する.
2、PreparedStatementオブジェクトの取得:ConnectionオブジェクトからSQLクエリーコマンドを入力して取得する;
3、ResultSetの取得:PreparedStatementに対してexecuteUpdate()またはexecuteQurey()の取得を実行する.
4、開いているオブジェクトを順次閉じる:ResultSet、PreparedStatement、Connectionオブジェクトを前後して閉じる.
Javaデータベース接続(Java Database Connectivity、略称JDBC)は、Java言語でクライアント・プログラムがデータベースにアクセスする方法を規範化するアプリケーション・インタフェースであり、データベース内のデータのクエリーや更新などの方法を提供します.JDBCもSun Microsystemsの商標です.JDBCはリレーショナル・データベース向けです.
1、JDBCアーキテクチャ:JDBC APIは2層と3層の処理モデルによるデータベースアクセスをサポートするが、一般的なJDBCアーキテクチャは2層からなる:JDBC API:アプリケーションによるJDBCの管理接続を提供する;JDBC Driver API:JDBCのドライブ接続管理をサポートする;JDBC APIのドライバマネージャとデータベース固有のドライバを使用して、異機種データベースへの透過的な接続を提供します.JDBCドライバマネージャは、複数の異機種データベースに接続された複数の同時ドライバをサポートする正しいドライバが各データソースにアクセスできることを保証します.以下に、ドライバマネージャ側のJDBCドライバとJavaアプリケーションの場所を示す構造図を示します.
2、一般的なJDBCコンポーネント:JDBC APIは以下のインタフェースとクラスを提供している:DriverManager:このクラスはデータベースドライバのリストを管理し、内容がJavaアプリケーションから使用される通信サブプロトコルから正しいデータベースドライバの接続要求に合致するかどうか、JDBCが一定のサブプロトコルの最初のドライブでデータベース接続を確立するために使用されることを識別する.Driver:このインタフェースはデータベース・サーバと通信し、ドライバ・オブジェクトと直接通信することはめったにありません.逆に、Driver Managerのオブジェクトを使用して、このタイプのオブジェクトを管理します.ドライバ・オブジェクトの作業に関する詳細も抽象化します.Connection:このインタフェースはデータベースに接触するすべての方法で、接続オブジェクトは通信コンテキストを表します.すなわち、データベース内のすべての通信は一意の接続オブジェクトを通じています.Statement:このインタフェースを使用して作成されたオブジェクトのSQL文をデータベースにコミットし、一部の派生インタフェースはストレージ・プロシージャを実行するパラメータを受け入れる.ResultSet:これらのオブジェクトはデータベースから保存された後、Statementオブジェクトを使用したSQLクエリを実行してデータを取得し、反復器としてデータを移動できます.SQLException:このクラスの処理はデータベースアプリケーションで発生したエラーです.
二、JDBC接続に必要な基本知識
1、データベースの基本操作、
eg:Mysqlのインストールと基本操作(insert,delete,update,query)
2、java開発ツールの使用、
eg:Eclipse/MyEclipse(mysql-connector-java-5.0.3-bin.jarのインポートを含む)
三、JDBCの接続及びコードデモ
1、JDBC接続ツール類
1)、Configuration.java:.xmlファイルからデータベースの構成情報を接続できます.dom 4 j-1.6.1.jarパッケージを導入する必要があります.
package cn.java.jdbc;
import java.io.InputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Configuration {
private String url;
private String driver;
private String username;
private String password;
public Configuration() {
}
public Configuration(String url, String driver, String username,
String password) {
super();
this.url = url;
this.driver = driver;
this.username = username;
this.password = password;
}
public static Configuration getConfigure()
{
try {
InputStream in = Configuration.class.getResourceAsStream("/db.xml");
if (null!=in) {
return load(in);
}
return null;
} catch (DocumentException e) {
e.printStackTrace();
return null;
}
}
private static Configuration load(InputStream in) throws DocumentException {
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
Element jdbc = doc.getRootElement();
String url = jdbc.element("url").getText();
String driver = jdbc.element("driver").getText();
String username = jdbc.element("username").getText();
String password = jdbc.element("password").getText();
Configuration cfg = new Configuration(url, driver, username, password);
return cfg;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
2)、db.xml:データベースの構成情報を保存する
<?xml version="1.0" encoding="UTF-8"?>
<jdbc>
<url>jdbc:mysql://localhost:3306/test</url>
<driver>com.mysql.jdbc.Driver</driver>
<username>root</username>
<password></password>
</jdbc>
3)、ConnectionFactory.java:JDBC接続ファクトリメソッドの1つ
package cn.java.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
private static ConnectionFactory connectionFactory=null;
private static Configuration config=Configuration.getConfigure();
private ConnectionFactory()
{
try {
Class.forName(config.getDriver());
} catch (ClassNotFoundException e) {
}
}
public Connection getConnection() throws SQLException
{
Connection con=null;
try {
con=DriverManager.getConnection(config.getUrl(), config.getUsername(), config.getPassword());
return con;
}finally{
// if (null != con) {
// con.close();
// }
}
}
public static ConnectionFactory getInstance()
{
if (null==connectionFactory) {
connectionFactory=new ConnectionFactory();
}
return connectionFactory;
}
}
4)、ConnectionFactory 2.java:JDBC接続ファクトリメソッドその2
package cn.java.jdbc;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
public class ConnectionFactory2 {
private DataSource ds ;
private static ConnectionFactory2 connectionFactory2 = null;
private ConnectionFactory2() {
MysqlDataSource myDS = new MysqlDataSource() ;
myDS.setServerName("localhost");
myDS.setDatabaseName("test");
myDS.setPort(3306) ;
myDS.setUser("root");
myDS.setCharacterEncoding("utf-8");
myDS.setPassword("");
this.ds = myDS ;
}
public Connection getConnection() throws SQLException {
Connection conn = null;
try {
conn = ds.getConnection() ;
conn.setAutoCommit(false);
return conn;
} catch (SQLException e) {
if (null != conn) {
conn.close();
}
throw e;
}
}
public static ConnectionFactory2 getInstance() {
if (null == connectionFactory2) {
connectionFactory2 = new ConnectionFactory2();
}
return connectionFactory2;
}
}
5)、User.java:データベーステーブルuserのidとnameのbeanクラスを定義します.ここでidは自動的に増加します.
package cn.java.jdbc;
public class User {
private int id;
private String name;
public User() {
}
public User(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
6)、UserDao.java:userテーブルの操作クラス、insert、delete、update、queryなどの方法を実現
package cn.java.jdbc;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
private PreparedStatement st = null;
private ResultSet rs = null;
public UserDao() {
}
public void insert( Connection con,String name) throws SQLException,IOException {
String sql="insert into user(name) values(?) ";
try{
st=con.prepareStatement(sql);
st.setString(1, name);
st.executeUpdate();
}finally{
if (null!=st) {
st.close();
}
}
}
public void delete(Connection con,int id) throws SQLException,IOException {
String sql="delete from user where id=?";
try{
st=con.prepareStatement(sql);
st.setInt(1, id);
st.executeUpdate();
}finally{
if (null!=st) {
st.close();
}
}
}
public void update( Connection con,int id,String name) throws SQLException,IOException {
String sql="update user set name=? where id=?";
try{
st=con.prepareStatement(sql);
st.setString(1, name);
st.setInt(2, id);
st.executeUpdate();
}finally{
if (null!=st) {
st.close();
}
}
}
public User query(Connection con,int index) throws SQLException,IOException{
User user=new User();
String sql="select * from user where id=?";
try{
st=con.prepareStatement(sql);
st.setInt(1, index);
rs=st.executeQuery();
while (rs.next()) {
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
break;
}
}finally{
if (null!=rs) {
rs.close();
}
if (null!=st) {
st.close();
}
}
return user;
}
public List<User> queryAll(Connection con) throws SQLException,IOException {
List<User> list=new ArrayList<>();
String sql="select * from user";
try {
st=con.prepareStatement(sql);
rs=st.executeQuery();
while (rs.next()) {
User user=new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
list.add(user);
}
}finally{
if (null!=rs) {
rs.close();
}
if (null!=st) {
st.close();
}
}
return list;
}
}
2、JDBC接続のテストクラス
1)、TestJdbc.java:データベーステストクラス
package cn.java.jdbc;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
public class TestJdbc {
public static void main(String[] args) {
Connection con=null;
try {
con=(Connection) ConnectionFactory.getInstance().getConnection();
UserDao userDao=new UserDao();
//con=(Connection) ConnectionFactory2.getInstance().getConnection();
if (null!=con) {
System.out.println("Link JDBC SUCESS");
//userDao.insert(con, "zhangsir");
//userDao.delete(con, 4);
//userDao.update(con, 1, "david");
List<User> list=userDao.queryAll(con);
for (User user : list) {
System.out.println("id="+user.getId()+" name="+user.getName());
}
}
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if (null!=con) {
try {
con.close();
} catch (SQLException e) {
}
}
}
}
}
三、JDBC接続まとめ
JDBC操作の基本手順は次のとおりです.
1、Connectionオブジェクトを作成し、SQLクエリーコマンド文字列を入力する.
2、PreparedStatementオブジェクトの取得:ConnectionオブジェクトからSQLクエリーコマンドを入力して取得する;
3、ResultSetの取得:PreparedStatementに対してexecuteUpdate()またはexecuteQurey()の取得を実行する.
4、開いているオブジェクトを順次閉じる:ResultSet、PreparedStatement、Connectionオブジェクトを前後して閉じる.