张晨光-JAVA零基础保姆式JDBC技术教程
Posted 云和数据张老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了张晨光-JAVA零基础保姆式JDBC技术教程相关的知识,希望对你有一定的参考价值。
JDBC文档
JDBC概述
JDBC概述
Java DataBase Connectivity Java 数据库连接技术
JDBC的作用
通过Java语言操作数据库,操作表中的数据
SUN公司为**了简化、**统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC
JDBC的本质
是官方(sun公司)定义的一套操作所有关系型数据库的规则(接口)。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,运行时的代码其实是驱动jar包中的实现类。
总结:
在java中要想访问数据库只能通过JDBC.
JDBC是java访问数据库的基础,其他数据库访问技术都是对JDBC的封装(Hibernate,MyBatis)
JDBC是为了访问不同的数据库,提供了一种统一的访问方式
JDBC本身是java连接数据库的一个标准,是进行数据库连接的抽象层.由java编写的一组类和接口,接口的实现由各大数据库厂商来实现
JDBC 入门案例
使用junit测试用例
/**
* @Auther: yanqi
* 只有无返回值和没有参数据的情况下才能使用junit,点击方法用右击运行JUnit run
* @Desc:
* 在同一个类中只能有一个main方法,这个main是被jvm所调用
* 我还想测试main2,没办法去运行这个main2
* 为了解决多次测试问题?
* 提供了一个 【测试用例】 junit
*/
public class JdbcDemo1
/*
使用junit测试用例:
1:在方法上加@Test
2: 前提-测试的方法返回值只能是void , 不能参数
3:注意 类名不能叫 test
*/
//单元测试
@Test
public void test1()
System.out.println("aaaa");
//单元测试
@Test
public void test2()
System.out.println("bbbb");
JDBC_CRUD操作
实现步骤
1、要连接mysql数据库。有一个mysql的数据库,并且要启动
2、创建一个数据库,创建一个表,把表添加一些数据。
3、找到msyql的驱动,并且拷贝到工程中。build-path
4、书写java代码。
准备数据库
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(25) DEFAULT NULL,
`passworld` varchar(25) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建JavaWeb工程
添加驱动jar包
JDBC的查询操作
/**
* 通过jdbc连接数据库步骤
* 1、加载驱动
* 2、连接数据库
* 3、创建statement对象
* 4、发送sql
* 5、处理结果集
* 6、关闭连接
*/
public class JDBC_CRUD
/**
* jdbc实现查询操作
*/
@Test
public void TestSelectUser() throws Exception
// 1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2、连接数据库
String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password ="root";
Connection conn = DriverManager.getConnection(url, user, password);
// 3、创建statement对象,这个对象是可以发送sql
Statement statm = conn.createStatement();
//4、发送sql
String sql="select * from t_user";
ResultSet rs = statm.executeQuery(sql);
//5、处理结果集
while (rs.next())//指针一个一个的去找,如果找到就取出
int id = rs.getInt("id");
String username = rs.getString("username");
String passworld2 = rs.getString("passworld");
int age = rs.getInt("age");
System.out.println(id+"-"+username+"-"+passworld2+"-"+age);
// 6、关闭连接 后打开的先关闭
rs.close();
statm.close();
conn.close();
两种取值方式
//5、处理结果集
while (rs.next())//指针一个一个的去找,如果找到就取出
/**
* 取值方式有两种:
* 1、按字段名来取,比较真观,推荐使用(常用)
* 2、按列号来取,可以在字段少的情况下使用
*/
int id = rs.getInt(1);//表示第一列id字段
String username = rs.getString(2);//表示第二列username字段
String passworld2 = rs.getString("passworld");
int age = rs.getInt("age");
System.out.println(id+"-"+username+"-"+passworld2+"-"+age);
JDBC的添加操作
/**
* jdbc实现添加操作
*/
@Test
public void TestAddUser() throws Exception
// 1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2、连接数据库
String url="jdbc:mysql://127.0.0.1:3306/test";
String user="root";
String pwd="root";
Connection conn = DriverManager.getConnection(url, user, pwd);
//3、创建statement对象
Statement stmt = conn.createStatement();
//4、发送sql 添加,修改,删除 都用executeUpdate()方法
String sql = "INSERT INTO `test`.`t_user`(`id`, `username`, `passworld`, `age`) VALUES (null, 'rose', '123', 97)";
int i = stmt.executeUpdate(sql);
System.out.println(i);//表示的影响的行数
//5、关闭连接
stmt.close();
conn.close();
JDBC的删除操作
/**
* jdbc实现删除操作
*/
@Test
public void TestDeleteUser() throws Exception
// 1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2、连接数据库
String url="jdbc:mysql://127.0.0.1:3306/test";
String user="root";
String pwd="root";
Connection conn = DriverManager.getConnection(url, user, pwd);
// 3、创建statement对象
Statement stmt = conn.createStatement();
// 4、发送sql
String sql="delete from t_user";
int i = stmt.executeUpdate(sql);
System.out.println(i);
// 5、关闭连接
stmt.close();
conn.close();
JDBC的修改操作
/**
* jdbc实现修改操作
*/
@Test
public void TestUpdateUser() throws Exception
// 1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2、连接数据库
String url="jdbc:mysql://127.0.0.1:3306/test";
String user="root";
String pwd="root";
Connection conn = DriverManager.getConnection(url, user, pwd);
// 3、创建statement对象
Statement stmt = conn.createStatement();
// 4、发送sql
String sql="update t_user set username ='张三' where id = 4 ";
int i = stmt.executeUpdate(sql);
System.out.println(i);
// 5、关闭连接
stmt.close();
conn.close();
异常的处理
public class JdbcEx
/**
* jdbc实现查询操作
*/
@Test
public void TestSelectUser()
// 1、加载驱动
try
Class.forName("com.mysql.jdbc.Driver");
catch (ClassNotFoundException e)
e.printStackTrace();
// 2、连接数据库
` String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password ="root";
Connection conn = null;
Statement statm = null;
ResultSet rs = null;
try
conn = DriverManager.getConnection(url, user, password);
// 3、创建statement对象,这个对象是可以发送sql
statm = conn.createStatement();
//4、发送sql
String sql="select * from t_user";
rs = statm.executeQuery(sql);
//5、处理结果集
while (rs.next())//批针一个一个的去找,如果找到就取出
/**
* 取值方式有两种:
* 1、按字段名来取,比较真观,推荐使用(常用)
* 2、按列号来取,可以在字段少的情况下使用
*/
int id = rs.getInt(1);//表示第一列id字段
String username = rs.getString(2);//表示第二列username字段
String passworld2 = rs.getString("passworld");
int age = rs.getInt("age");
System.out.println(id+"-"+username+"-"+passworld2+"-"+age);
catch (SQLException e)
e.printStackTrace();
finally
// 6、关闭连接 后打开的先关闭
try
if(rs != null)
rs.close();
rs =null;//关闭连接,给赋值null,gc垃圾回收回机制会优先处理这些对象
catch (SQLException e)
e.printStackTrace();
try
if(statm != null)
statm.close();
statm=null;
catch (SQLException e)
e.printStackTrace();
try
if(conn != null)
conn.close();
conn = null;
catch (SQLException e)
e.printStackTrace();
工具类的抽取
public class JDBCUtil
//静态代码块,随着类的加载而加载,并且只加载一次
static
try
Class.forName("com.mysql.jdbc.Driver");
catch (ClassNotFoundException e)
e.printStackTrace();
//获取连接
public static Connection getConnection()
String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password ="root";
Connection conn = null;
try
conn = DriverManager.getConnection(url, user, password);
catch (SQLException e)
e.printStackTrace();
return conn;
//关闭方法
public static void close(ResultSet rs , Statement statm, Connection conn)
try
if(rs != null)
rs.close();
rs =null;//关闭连接,给赋值null,gc垃圾回收回机制会优先处理这些对象
catch (SQLException e)
e.printStackTrace();
try
if(statm != null)
statm.close();
statm=null;
catch (SQLException e)
e.printStackTrace();
try
if(conn != null)
conn.close();
conn = null;
catch (SQLException e)
e.printStackTrace();
//关闭方法
public static void close( Statement statm, Connection conn)
try
if(statm != null)
statm.close();
statm=null;
catch (SQLException e)
e.printStackTrace();
try
if(conn != null)
conn.close();
conn = null;
catch (SQLException e)
e.printStackTrace();
工具类的测试
public class UtilTest
@Test
public void testUpdate()
Connection conn = null;
Statement stmt = null;
try
conn = JDBCUtil.getConnection();
stmt = conn.createStatement();
int i = stmt.executeUpdate("update t_user set username = '江一燕' where id = 4");
System.out.println(i);
catch (SQLException e)
e.printStackTrace();
finally
JDBCUtil.close(stmt,conn);
/**
* 测试的查询
*/
@Test
public void test()
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
conn = JDBCUtil.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from t_user");
while (rs.next())
int id = rs.getInt("id");
String username = rs.getString("username");
String passworld = rs.getString("passworld");
int age = rs.getInt("age");
System.out.println(id);
System.out.println(username);
System.out.println(passworld);
System.out.println(age);
catch (SQLException e)
e.printStackTrace();
finally
JDBCUtil.close(rs,stmt,conn);
工具类的优化
jdbc.properties
ClassforName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
user=root
password=root
public class JDBCUtil
private static String classforName;
private static String url;
private static String user;
private static String password;
private static Connection conn = null;
//静态代码块,随着类的加载而加载,并且只加载一次
static
//FileInputStream fis = null; //获取的配置文件方式一
Properties pro = null;
try
//fis = new FileInputStream("src/jdbc.properties"); //获取的配置文件方式一,web项目中无法用
//获取的配置文件二(通过类加载器)
InputStream is=JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
pro = new Properties();
//加载到Properties集合对象中
pro.load(is);
catch (IOException e)
e.printStackTrace();
finally
try
is.close();
以上是关于张晨光-JAVA零基础保姆式JDBC技术教程的主要内容,如果未能解决你的问题,请参考以下文章
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备(建议收藏)