JDBC是一个Java应用程序接口,作用是封装了对数据库的各种操作。JDBC由类和接口组成,使用Java开发数据库应用都需要4个主要的接口:Driver、Connection、Statement、ResultSet,这些接口定义了使用SQL访问数据库的一般架构。 

1、JDBC相关类和API

JDBC是一个Java应用程序接口,作用是封装了对数据库的各种操作。JDBC由类和接口组成,使用Java开发数据库应用都需要4个主要的接口:Driver、Connection、Statement、ResultSet,这些接口定义了使用SQL访问数据库的一般架构。

  • Driver接口

Driver接口是所有JDBC程序必须实现的接口,该接口专门提供给数据库厂商使用。编写JDBC程序时,必须制定数据库驱动程序或类库加载到项目classpath中。

数据库bigdecimal java用什么接收 数据库常用的java接口_数据库

  • DriverManager类

DriverManager用于加载JDBC驱动并创建与数据库的连接。其中定义了2个重要的静态方法:

DriverManager.registerDriver(Driver driver) // 用于向DeriverManager注册给定的JDBC驱动程序
DriverManager.getConnection(String url, String user, String pwd) // 建立与数据库的连接,返回表示连接的Connection对象
  • Connection接口

Connection代表与数据库的连接,其中定义了一系列的方法:

Connection.getMetaData(); // 返回表示数据库元数据的DatabaseMetaData对象
Connection.createStatement(); // 创建一个Statement对象
Connection.prepareStatement(String sql); // 创建一个PreparedStatement对象
Connection.prepareCall(String sql); // 创建一个CallableStatement对象来调用数据库存储过程
  • Statement接口

Statement接口用于向数据库发送SQL语句。

Statement.execute(String sql); // 执行各种SQL语句,返回一个boolean类型值,true表示执行的SQL语句具备查询结果,可通过Statement.getResultSet()方法获取 
Statement.executeUpdate(String sql); // 执行SQL中的insert/update/delete语句,返回一个int值,表示受影响的记录的数目 
Statement.executeQuery(String sql); // 执行SQL中的select语句,返回一个表示查询结果的ResultSet对象

 

  • ResultSet接口
ResultSet.next(); // 将游标由当前位置移动到下一行 
ResultSet.getString(String columnName); // 获取指定字段的String类型值 
ResultSet.getString(int columnIndex); // 获取指定索引的String类型值 
ResuleSet.previous(); // 将游标由当前位置移动到上一行

2、程序示例

数据库IP 192.168.1.150,数据库名称为test,数据表名称persion,表结构为:

数据库bigdecimal java用什么接收 数据库常用的java接口_java_02

 JDBC连接MySQL程序示例

package jdbctest;

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


/*
import java.sql.DriverManager;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
 * */
public class DemoJDBC {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		//加载驱动类
		Class.forName("com.mysql.jdbc.Driver");
		
		//通过DriverManager 获取数据库连接
		String url="jdbc:mysql://192.168.50.1/test";

		String user= "root";
		String password = "123456";
		Connection connection= (Connection)DriverManager.getConnection(url, user, password);
		
		//通过Connection对象获取Statement对象,Statement执行SQL语句
		Statement statement = (Statement) connection.createStatement();
		ResultSet resultSet=statement.executeQuery("select * from t_user");
		//操作ResultSet的结果
		while (resultSet.next()) {
			//第一种获取字段的方式
			System.out.println("FIRST--id:"+resultSet.getString(1)+",name:"+resultSet.getString(2)+",age:"+resultSet.getString(3));
			System.out.println("SECOND--id:"+resultSet.getString("id")+",name:"+resultSet.getString("name")
			+",age:"+resultSet.getString("age"));
		}
		//插入数据
		int ret = statement.executeUpdate("insert into t_user values(3,'Jack',21)");
		if(ret>0) {
			System.out.println("----insert ok----");
			resultSet=statement.executeQuery("select * from t_user");
			while (resultSet.next()) {
				//第一种获取字段的方式
				System.out.println("SECOND--id:"+resultSet.getString("id")+",name:"+resultSet.getString("name")
				+",age:"+resultSet.getString("age"));
			}
		}
		connection.close();
		statement.close();
		resultSet.close();
	}

}

执行结果:

数据库bigdecimal java用什么接收 数据库常用的java接口_数据库_03

 JDBC使用PreparedStatement进行数据插入操作程序示例

package jdbctest;

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

import com.mysql.jdbc.PreparedStatement;


/*
import java.sql.DriverManager;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
 * */
public class DemoJDBC2 {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		//加载驱动类
		Class.forName("com.mysql.jdbc.Driver");
		
		//通过DriverManager 获取数据库连接
		String url="jdbc:mysql://192.168.50.1/test";

		String user= "root";
		String password = "123456";
		Connection connection= (Connection)DriverManager.getConnection(url, user, password);
		
		PreparedStatement statement=(PreparedStatement)connection.prepareStatement("insert into t_user values(?,?,?)");
		statement.setInt(1, 4);
		statement.setString(2, "Bob");
		statement.setInt(3, 16);
		statement.executeUpdate();
		
		ResultSet 	resultSet=statement.executeQuery("select * from t_user");
			while (resultSet.next()) {
				//第一种获取字段的方式
				System.out.println("SECOND--id:"+resultSet.getString("id")+",name:"+resultSet.getString("name")
				+",age:"+resultSet.getString("age"));
			}
		
		connection.close();
		statement.close();
		resultSet.close();
	}

}

运行结果:

数据库bigdecimal java用什么接收 数据库常用的java接口_数据库_04

JDBC数据类型

下表列出了默认的JDBC数据类型与Java数据类型转换,当使用PreparedStatementCallableStatement对象时可调用setXXX()方法或ResultSet.updateXXX()方法。

SQL

JDBC/Java

setXXX

updateXXX

VARCHAR

java.lang.String

setString

updateString

CHAR

java.lang.String

setString

updateString

LONGVARCHAR

java.lang.String

setString

updateString

BIT

boolean

setBoolean

updateBoolean

NUMERIC

java.math.BigDecimal

setBigDecimal

updateBigDecimal

TINYINT

byte

setByte

updateByte

SMALLINT

short

setShort

updateShort

INTEGER

int

setInt

updateInt

BIGINT

long

setLong

updateLong

REAL

float

setFloat

updateFloat

FLOAT

float

setFloat

updateFloat

DOUBLE

double

setDouble

updateDouble

VARBINARY

byte[ ]

setBytes

updateBytes

BINARY

byte[ ]

setBytes

updateBytes

DATE

java.sql.Date

setDate

updateDate

TIME

java.sql.Time

setTime

updateTime

TIMESTAMP

java.sql.Timestamp

setTimestamp

updateTimestamp

CLOB

java.sql.Clob

setClob

updateClob

BLOB

java.sql.Blob

setBlob

updateBlob

ARRAY

java.sql.Array

setARRAY

updateARRAY

REF

java.sql.Ref

SetRef

updateRef

STRUCT

java.sql.Struct

SetStruct

updateStruct

JDBC3.0中增强支持BLOBCLOBARRAYREF等数据类型。ResultSet对象可调用UPDATEBLOB()updateCLOB()updateArray()updateRef()方法,使您可以在数据库服务器上直接操作相应的数据。

对于setXXX()updateXXX()方法,可以转换成特定的Java类型到特定的JDBC数据类型。而使用setObject()updateObject()方法,几乎所有的Java类型映射到JDBC数据类型。

ResultSet对象提供相应的getXXX()方法为每个数据类型来检索列值。每一种类型方法,可以使用与列名或由列的序号位置来获取列的数据。

SQL

JDBC/Java

setXXX

getXXX

VARCHAR

java.lang.String

setString

getString

CHAR

java.lang.String

setString

getString

LONGVARCHAR

java.lang.String

setString

getString

BIT

boolean

setBoolean

getBoolean

NUMERIC

java.math.BigDecimal

setBigDecimal

getBigDecimal

TINYINT

byte

setByte

getByte

SMALLINT

short

setShort

getShort

INTEGER

int

setInt

getInt

BIGINT

long

setLong

getLong

REAL

float

setFloat

getFloat

FLOAT

float

setFloat

getFloat

DOUBLE

double

setDouble

getDouble

VARBINARY

byte[ ]

setBytes

getBytes

BINARY

byte[ ]

setBytes

getBytes

DATE

java.sql.Date

setDate

getDate

TIME

java.sql.Time

setTime

getTime

TIMESTAMP

java.sql.Timestamp

setTimestamp

getTimestamp

CLOB

java.sql.Clob

setClob

getClob

BLOB

java.sql.Blob

setBlob

getBlob

ARRAY

java.sql.Array

setARRAY

getARRAY

REF

java.sql.Ref

SetRef

getRef

STRUCT

java.sql.Struct

SetStruct

getStruct