歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

JDBC編程的步驟

一、進行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