JDBC干货一

微信扫一扫,分享到朋友圈

JDBC干货一
  • Java Database Connectivity
  • JDBC是java中一套和数据库进行交互的API(应用程序编程接口)

为什么使用JDBC

  • 因为java程序猿需要连接各种数据库(oracle,mysql,db2等)为了避免java程序猿每一种数据库都需要学习一遍,sun公司提出一个JDBC接口,各个数据库厂商去针对此接口写实现类(数据库驱动),这样的话java程序猿连接数据库只需要掌握JDBC接口的调用就可以操作各种数据库

eclipse配置maven

  1. 本机安装maven
  2. 修改远程仓库地址

    • maven的配置文件settings中修改

              
      
          
      
      	
      	
      
      	
      	
      
      	
      	
      
      	
      		
      			nexus
      			Tedu Maven
      			*
      			<!--http://maven.tedu.cn/nexus/content/groups/public-->
      			 http://maven.aliyun.com/nexus/content/groups/public/ 
      		
      	
      	
      
      	
      	
      	
      
      
  3. 在eclispe中配置

    • window —- > perferences —- > Maven — > User Settings —- > 在Global Settings中选择你的maven配置文件settings即可
    • OK
  4. 新建项目

    • New — > Maven Project — > Create Simple Project
    • 第一次创建可能需要很长的时间
  5. 在pom.xml中写上依赖

    
  4.0.0
  cn.tedu
  JDBCMaven
  0.0.1-SNAPSHOT
  

		
			junit
			junit
			4.12
			test
		

		
			mysql
			mysql-connector-java
			5.1.44
		

		
			org.springframework
			spring-core
			4.3.7.RELEASE
		
	  

如何使用JDBC

  • 创建maven工程
  • 下载mysql相关jar包
  • 登录阿里私服: maven.aliyun.cn

执行方法(Statement)

  • execute(sql)
    执行DDL create alter
  • executeUpdate(sql)
    执行DML insert update delete
  • executeQuery(sql)
    执行select语句
      Class.forName("com.mysql.jdbc.Driver");   //注册驱动
//链接数据库
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "root");
//创建Statement,执行sql语句的对象
Statement statement =connection.createStatement();

String sql_create="create table if not exists t(id int primary key auto_increment,age int ,name varchar(10))";

String sql_insert="insert into t(age,name) values(22,'jack'),(33,'tom')";

String sql_sselect="select * from t";
//执行create 语句
Boolean flag=statement.execute(sql_create);
System.out.println(flag);
//执行insert语句
int row=statement.executeUpdate(sql_insert);
System.out.println(row);
//执行select
ResultSet resultSet=statement.executeQuery(sql_sselect);
while(resultSet.next()){
	int id=resultSet.getInt("id");
	int age=resultSet.getInt("age");
	String name = resultSet.getString("name");
	System.out.println(id+"----"+age+"----"+name);
}

ResultSet(查询得到结果集)

  • 代表查询语句得到的结果集(executeQuery)

  • 见到resultSet 就用while

  • next() 移动游标 有下一条返回true,没有返回false

      Class.forName("com.mysql.jdbc.Driver");  //加载驱动
      
      // 链接数据库
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "root");
Statement statement =connection.createStatement();   //获取执行sql语句对象
      String sql_sselect="select * from t";   //创建sql语句
      ResultSet resultSet=statement.executeQuery(sql_sselect);  //获取结果集

while(resultSet.next()){
	int id=resultSet.getInt("id");
	int age=resultSet.getInt("age");
	String name = resultSet.getString("name");
	System.out.println(id+"----"+age+"----"+name);
}

关闭资源(close)

  • 关闭Connection

    • 如果sql执行完,继续持有连接没有意义,会造成服务器压力过大,所以需要关闭
  • 关闭Statement

    • 会占用内存的资源,所以用完就关闭
  • 关闭ResultSet

    • 因为ResultSet对象中包含查询结果的数据,会占用内存空间

关闭顺序

  • ResultSet , Statement , Connection

异常处理

@Test
	public void testException(){
		Connection connection = null;  //申明Connection为null
		Statement statement = null;   // 申明 Statement为null
		try {
			Class.forName("com.mysql.jdbc.Driver"); // 注册驱动
			// 链接数据库
			connection = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/jdbc", "root", "root");
			// 创建Statement,执行sql语句的对象
			statement = connection.createStatement();
			String sql_insert = "insert into t(age,name) values(22,'marry'),(33,'Alice')";
			int row=statement.executeUpdate(sql_insert);
			System.out.println(row);

		} catch (Exception e) {
			System.out.println("出异常");
			e.printStackTrace();

		} finally {
			if (statement != null) {
				try {
					statement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (connection != null) {
				try {
					connection.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}

JDBC封装

  • 目的:把频繁出现的代码封装起来,起到代码复用的作用,从而提高开发效率
  1. 创建DBUtils类(数据库工具类)

    1. 封装建立数据连接
    2. 封装关闭资源
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 数据库封装类
 * @author chenjiabing
 */
public class DBUtils{
	/**
	 * 获取连接对象
	 * @param user  数据库用户名
	 * @param password 密码
	 * @param database : 数据库名称
	 */
	public static Connection getConnection(String user, String password,
			String database) throws Exception {
		Class.forName("com.mysql.jdbc.Driver"); // 注册驱动
		// 链接数据库
		Connection connection = DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/" + database, user, password);
		return connection;
	}

	/**
	 * 关闭数据库资源
	 * @param connection 连接对象
	 * @param statement Statement对象
	 * @param resultSet 结果集
	 */
	public static void close(Connection connection, Statement statement,
			ResultSet resultSet) {
		try {
			if (resultSet != null) {
				resultSet.close();
			}

			if (statement != null) {
				statement.close();
			}

			if (connection != null) {
				connection.close();
			}
		} catch (Exception exception) {
			exception.printStackTrace();
		}

	}

}
  1. 测试
   @Test
public void testUntils(){
	Connection connection=null;
	Statement statement=null;
	ResultSet resultSet=null;
	try {
		 connection=DBUtils.getConnection("root", "root", "jdbc");  //获取连接
		 statement=connection.createStatement();
		 //插入数据
		 int row = statement.executeUpdate("insert into t(age,name) values(22,'陈加兵'),(33,'Jackson')");
		 System.out.println(row);
	} catch (Exception e) {
		e.printStackTrace();
	}finally{
		DBUtils.close(connection, statement, resultSet);
	}
}

微信扫一扫,分享到朋友圈

JDBC干货一

从零开始写项目第三篇【在线聊天和个人收藏夹】

上一篇

JDBC干货二

下一篇

你也可能喜欢

JDBC干货一

长按储存图像,分享给朋友