歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> JDBC編程的步驟

JDBC編程的步驟

日期:2017/3/1 9:36:53   编辑:Linux編程

一、進行JDBC編程的步驟大致如下:

1. 加載數據庫驅動,通常使用Class類的forName()靜態方法來加載驅動。如下代碼:

Class.forName(dirvirClass)

上面代碼中的driverClass就是數據庫驅動類所對應的字符串

加載MySQL數據庫時采用的代碼為:

Class.forName("com.mysql.jdbc.Driver");

2. 通過DriverManager獲取數據庫連接。

DriverManager.getConnection(String url,String user,Stringpass)

使用DriverManager獲取數據庫連接時,需要傳入3個參數:數據庫URL、登陸數據庫的用戶名和密碼。

數據庫URL通常遵循如下寫法:

jdbc:subprotocol:other stuff.

連接MySQL數據庫時的URL寫法為:

jdbc:mysql://localhost/BDYun

3. 通過Connection對象創建Statement對象。Connection創建Statement的方法有如下3個:

(1) createStatement():創建基本的Statement對象

(2) prepareStatement(String sql):根據傳入的SQL語句創建預編譯的Statement對象

(3) prepareCall(String sql):根據傳入的SQL語句創建CallableStatement對象

4. 使用Statement執行SQL語句。所有的Statement都有如下3個方法來執行SQL語句:

(1) execute():可以執行任何SQLyu7ju,但比較麻煩

(2) executeUpdate():主要用於執行DML和DDL語句。執行DML語句返回受SQL語句影響的行數,執行DDL語句返回0.

(3) executeQuery():只能執行查詢語句,執行後返回代表查詢結果的ResultSet對象

5. 操作結果集。如果執行的SQL語句是查詢語句,則執行結果將返回一個ResultSet對象,該對象裡保存了SQL語句查詢的結果。程序可以通過操作該ResultSet對象來取出查詢結果。ResultSet對象主要提供了如下兩類方法。

(1)next()、previous()、first()、last()、beforeFirst()、afterLast()、absolute()等移動記錄指針的方法。

(2)getXxx()方法獲取記錄指針指向行、特定列的值。該方法既可以使用列索引作為參數,也可以使用列名稱作為參數。使用列索引作為參數性能更好,使用列名稱作為參數可讀性更好。

6. 回收數據庫資源,包括關閉ResultSet、Statement和Connection等資源。

二、代碼演示

利用MySQL創建一個數據庫BDYun,並在數據庫中新建一個表POI,往表中插入兩條數據

create database BDYun;

use database BDYun;

create table POI(id int(11) auto_incrementprimary key,latitude varchar(255),longitude varchar(255),picurlvarchar(255),serviceurl varchar(255) );

insert into poi values(null,36.0333,118.7833,null,null);

insert into poivalues(null,37.3333,116.3333,null,null);

在eclipse中創建一個新項目,並導入jar包:mysql-connector-java-5.1.30.bin.jar

(1)創建查詢類,代碼如下:

package com.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnMySQLTest
{

public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
try
{
Class.forName("com.mysql.jdbc.Driver");


Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/BDYun","root","340621");
Statement stmt = conn.createStatement();

String sql = "select * from poi";
ResultSet rs = stmt.executeQuery(sql);

while(rs.next())
{
System.out.println("id:"+rs.getInt(1)+"緯度:"+rs.getString(2)+"經度:"+rs.getString(3));
}
} catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

程序運行結果如下:

(2)利用executeUpdate方法執行DDL和DML語句

代碼如下:

package com.jdbc;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Properties;

public class ExecuteUpdateTest
{
public void createTable(String sql) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/BDYun","root","340621");
Statement stmt = conn.createStatement();
{
stmt.executeUpdate(sql);
}

}
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
ExecuteUpdateTest eut = new ExecuteUpdateTest();
String sql = "create table camera (id int auto_increment primary key,latitude varchar(20),longitude varchar(20),picurl varchar(20),serviceurl varchar(20))";
eut.createTable(sql);

System.out.println("建表成功");
}

}

程序執行成功後,登陸mysql數據庫,可以看到數據庫中出現了剛才創建的表格

(3)利用executeUpdate方法執行插入語句

package com.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class ExecuteUpdateInsertTest
{
public int insertData(String sql) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost/BDYun", "root", "340621");
Statement stmt = conn.createStatement();
{
return stmt.executeUpdate(sql);
}

}

public static void main(String[] args) throws Exception
{

ExecuteUpdateInsertTest ed = new ExecuteUpdateInsertTest();
String sql = "insert into poi values(null,120.5333,34.6555,null,null)";
int result = ed.insertData(sql);
System.out.println("數據庫表中共有"+result+"條記錄受影響");

}

}

Copyright © Linux教程網 All Rights Reserved