初学数据库

JDBC连接数据库的步骤

JDBC连接数据库可以概括为6步,分别是加载JDBC驱动、建立数据库连接、创建一个语句对象、执行一个查询、处理结果集和关闭数据库连接,下面将分别予以详细介绍。

1. 加载JDBC驱动

如果使用第一种数据库驱动(JDBC-ODBC桥)连接,那么可以使用java反射机制中的方法forName()进行加载,如:

Class.forName(“sun.jdbc.odbc.jdbcOdbcDriver”);

另外还有几种常见的驱动程序包括Oracle的驱动程序、Microsoft SQL Server的驱动程序和MySQL的JDBC的驱动程序,其加载 语句分别是:

Class.forName(“oracle.jdbc.driver.OracleDriver”);

Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);

Class.forName(“com.mysql.jdbc.Driver”);

2. 建立数据库连接

驱动管理类DriverManager使用特定的驱动程序,通过getConnection(String usr)方法建与某个特定数据库的连接。每个JDBC驱动都对应一个URL地址用于自我标识,常见的有连接Sun公司的JDBC-ODBC驱动URL、连接Oracle公司的URL、连接Microsoft公司SQL Server的URL和连接MySQL的URL,分别是:

jdbc:odbc:pubsdb;

jdbc:oracle:thin:@localhost:1521:orcl;

jdbc:Microsoft:sqlserver://127.0.0.1:1433;

jdbc:mysql://localhost:3306/mysql;

例如,连接MySQL:

Connection con

=DriverManager.getConnection(“jdbc:mysql://localhost/sample”,username,password);

String url=”jdbc:mysql://localhost/sample”; //sample表示的是数据库,localhost为主机或服务器

String username, //登录MySQL数据库的用户名

String password; //登录MySQL数据库的密码

Connection conn=DriverManager.getConnection(url,username,password);

3. 创建一个语句对象

创建一个语句对象则需要调用接口java.sql.Connection中的createStatement()方法创建Statement类的语句对象,如:

Statement st=con.createStatement();

通过创建一个语句对象则可以发送SQL语句到数据库准备执行相应的操作。

4. 执行SQL语句

将SQL语句发送到数据库之后,根据发送的SQL语句确定执行executeQuery()方法或executeUpdate()方法,如果发送的SQL语句是SELECT语句则需要执行executeQuery()方法,如果发送的是SQL语句是Insert()语句、Create语句、Delete语句和Update语句则需要执行executeUpdate()方法,如:

//执行select类型的SQL语句。

ResultSet rs=statement.executeQuery(“SELECT sno,sname FROM student”);

//执行insert类型的SQL语句。

int num=statement.executeQuery(“INSERT INTO student values(„2006081203‟,‟san‟,‟女‟)”);

5、关闭对象

使用完对象之后,记得关闭它们

     rs.close();
st.close();
conn.close();

总结来说:大大小小共6步:如下

1、加载驱动

2、创建与数据库的链接

3、得到用于向数据库发送sql语句的statement

4、向数据库发送sql,并得到代表结果集的resultset

5、从resultset获取数据

6、关闭链接,释放资源


例子:

1、首先写一个数据库的工具类相当于工具包,取名为JdbcUtils

package cn.edu.xyc.utils;

//jdbc工具类,为了保证程序的灵活性

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JdbcUtils {

	private static String driver = null;
	private static String url = null;
	private static String username = null;
	private static String password = null;

	// 静态代码块是为了只加载一次驱动
	static {

		try {
			/**
			 *  driver=com.mysql.jdbc.Driver
				url=jdbc:mysql://localhost:3306/JDBC1
				username=root
				password=root
			 */
			InputStream in = JdbcUtils.class.getResourceAsStream("db.properties");//db数据库的属性文件
			
			Properties prop = new Properties();
			prop.load(in);

			driver = prop.getProperty("driver");
			url = prop.getProperty("url");
			username = prop.getProperty("username");
			password = prop.getProperty("password");
			Class.forName(driver);

		} catch (Exception e) {

			throw new ExceptionInInitializerError(e);
		}

	}

	// 加载驱动,并获取与数据库的链接
	public static Connection getconnection() throws SQLException {

		return DriverManager.getConnection(url, username, password);
	}

	// 释放
	public static void release(Connection conn, Statement st, ResultSet rs) {

		if (rs != null) {
			try {
				rs.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
			rs=null;
		}
		if (st != null) {
			try {
				st.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
//			st=null;

		}
		if (conn != null) {
			try {
				conn.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
//			conn=null;
		}
	}
}
2、然后使用工具类实现对数据的CRUD

package cn.edu.xyc;

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

import org.junit.Test;

import cn.edu.xyc.utils.JdbcUtils;



//使用jdbc进行数据库的增删改查
public class Demo4 {

	@Test
	public void insert(){
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		try {
			
			conn = JdbcUtils.getconnection();
			st = conn.createStatement();
			String sql = "insert into user(id,name,password,email,birthday) values(6,'xxx','1223','tu@tuchuanjun.com','1994-08-06')";
			int num = st.executeUpdate(sql);
			if(num>0){
				System.out.println("插入成功!!!");
			}
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			
			JdbcUtils.release(conn, st, rs);
		}
		
	}

	@Test
	public void delete(){
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		try {
			
			conn = JdbcUtils.getconnection();
			st = conn.createStatement();
			String sql="delete from user where id = 5";
			int num = st.executeUpdate(sql);
			if(num>0)
			{
				System.out.println("删除成功!!!");
			}
		} catch (Exception e) {
			
		}finally{
			JdbcUtils.release(conn, st, rs);
		}
		
	}
	@Test
	public void update(){
		
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		try {
			
			conn = JdbcUtils.getconnection();
			st = conn.createStatement();
			String sql = "update user set name='tu2',password='tu2' where id=2";
			int num = st.executeUpdate(sql);
			if(num>0){
				System.out.println("更新成功!!!");
			}
			
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			JdbcUtils.release(conn, st, rs);
		}
		
	}
	
	@Test
	public void select(){
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		try {
			
			conn = JdbcUtils.getconnection();
			st = conn.createStatement();
			String sql = "select * from user where id=1;";
			rs = st.executeQuery(sql);
			if(rs.next()){
				System.out.println(rs.getString("name"));
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			JdbcUtils.release(conn, st, rs);
		}
		
	}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值