Java数据库操作

一、如何通过JDBC访问数据库

JDBC:Java DataBase Connectivity数据库连接用于在java程序中实现操作数据库。一般步骤如下:

  1. 加载JDBC驱动器。将数据库的JDBC驱动加载到classPath,web工程的一般放大WEB-INF/lib/下,java工程项目的则用build path将jar包导进去。
  2. 加载JDBC驱动,并将其注册到DriverManager中,一般使用反射Class.forName(String driveName).
  3. 简历数据库连接,取得Connection对象。一般通过Driver.getConnection(url,username,password)方法实现。
  4. 建立Statement对象或是PreparedStatement对象。
  5. 执行SQL语句
  6. 访问结果集ResultSet
  7. 依次将ResultSet、Statement、PreparedStatement、Connection对象关闭,释放掉所占用的资源。

实例代码如下:

首先创建一张表:

 create tabel Employee(
					id int primary key,
					name varchar(20),
					age int
				);

 

 

示例程序:

 

import java.sql.*;

public class Test{

	public static void main(String args[]){

		String user="user1";
		String password="pwd';
		String url="jdbc:mysql://127.0.0.1:3306/Test";
		String driver="com.mysql.jdbc.Driver";
		Connection con=null;
		Statement stmt=null;
		ResultSet rs=null;

		try{
			Class.forName(driver);
			con=DriverManager.getConnection(url,user,password);
			stmt=con.createStatement();
			stmt.execute("insert into Employee values(1,'James1',36)");
			rs=stmt.executeQuery("select * from Employee");
			while(rs.next()){
				System.out.println(rs.getInt(1)+" " +rs.getString(2)+" " +rs.getInt(3));
			}
		}catch(SQLException e){
			System.out.println(e.getMessage());
		}finally{
			try{
				if(rs != null)rs.close();
				if(stmt != null)stmt.close();
				if(con != null)con.close();

			}catch(SQLException fe){
				System.out.println("fe:"fe.getMessage());
			}
			
		}
	}
}

 

二、Statement、PreparedStatement和CallableStatement的区别

  1. Statement一般用于执行不带参数的SQL语句,并返回生成的结果,每次执行SQL语句时,数据库都要编译该SQL语句。
  2. PerparedStatement表示 与的SQL语句对象,用于执行带参数的SQL语句。效率高、安全性好、代码可读性和可维护性好。(推荐使用)
  3. CallableStatement用来调用数据库中存储过程的接口,如果有输出参数要注册,说明是输出参数。

举例说明PreparedStatement:

 

import java.sql.*;


public class Test{


	public static void main(String args[]){


		String user="user1";
		String password="pwd';
		String url="jdbc:mysql://127.0.0.1:3306/Test";
		String driver="com.mysql.jdbc.Driver";
		Connection con=null;
		PreparedStatement ps=null;
		ResultSet rs=null;


		try{
			Class.forName(driver);
			con=DriverManager.getConnection(url,user,password);
			ps=con.preparedStatement("select * from Emloyee where id=?");
			ps.setInt(1,1);
			rs=ps.executeQuery();
			while(rs.next()){
				System.out.println(rs.getInt(1)+" " +rs.getString(2)+" " +rs.getInt(3));
			}
		}catch(SQLException e){
			System.out.println(e.getMessage());
		}finally{
			try{
				if(rs != null)rs.close();
				if(ps != null)ps.close();
				if(con != null)con.close();


			}catch(SQLException fe){
				System.out.println("fe:"fe.getMessage());
			}
			
		}
	}
}

 

三、getString()方法和getObject()方法有什么区别

在数据量很大的时候直接调用ResultSet方法的getString、getInt、getData方法会抛出异常:OrcalecException。此时应该使用getObject方法。因为其他方法会将查询结果都加载到内存中,如果数据量超过内存上限,则会导致异常。

 

四、JDBC与Hibernate有什么区别

Hibernate是JDBC的封装。采用配置文件的形式将数据库连接参数写到XML文件中。(下次再研究Hibernate)

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值