本节JDBC的操作学习大致分为
- 数据库的装载和连接
- 数据库的增删改查
- 数据库的预编译
- 数据库的事务管理
下面直接上代码了,还是代码比较实在(以mysql为例)
1、装载和连接
// 装载驱动
try {
String driverString = "com.mysql.jdbc.Driver";
Class.forName(driverString).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// mysql 连接的url 后面的有一大串解决了 timestamp不能转换的问题
String url = "jdbc:mysql://localhost:3306/lesson;
// 实例化连接
try {
connection = DriverManager.getConnection(url, "root", "123");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这里注意。对不同数据库的操作的不同之处仅在于这一步的driveString和url的不同。
2、增删改查
/**
* 从数据库中得到所有的对象
*/
public void getUsers() {
String sql = "select * from student";
try {
// 执行对象 执行executeQuery查询语句
ResultSet resultSet = statement.executeQuery(sql);
// 结果集的元数据
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
// 要注意这里从1开始
for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
System.out.println(i);
System.out.println("列名和类型" + resultSetMetaData.getColumnName(i)
+ " " + resultSetMetaData.getColumnType(i) + " "
+ resultSetMetaData.getColumnLabel(i));
}
// 遍历结果集放入队列
while (resultSet.next()) {
int id = resultSet.getInt(1);
String sex = resultSet.getString(2);
String name = resultSet.getString(3);
String addr = resultSet.getString(4);
int teacher_id = resultSet.getInt(5);
UserData userData = new UserData(id, sex, name, addr,
teacher_id);
UserData.userDatas.add(userData);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("成功获得数据库中所有用户信息");
//
for (int i = 0; i < UserData.userDatas.size(); i++) {
System.out.println(UserData.userDatas.get(i));
}
}
/**
* 插入一个数据的方法
*
* @param userData
* @return
*/
public boolean insert(UserData userData) {
boolean b = false;
String sex = userData.getSex();
String name = userData.getName();
String addr = userData.getAddr();
int teacher_id = userData.getTeacher_id();
String sql = "insert into student (sex,name,addr,teacher_id) "
+ "values ('" + sex + "','" + name + "','" + addr
+ "',teacher_id)";
try {
int count = statement.executeUpdate(sql);
System.out.println("插入成功,生效行数是" + count);
b = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return b;
}
/**
* 删除一个数据的方法
*
* @param id
* @return
*/
public boolean delete(int id) {
boolean b = false;
String sql = "delete from student where id = " + id;
try {
int count = statement.executeUpdate(sql);
System.out.println("删除成功,生效行数是" + count);
b = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return b;
}
3、预编译
/**
* 预编译
*/
public void prepareHandle() {
String sql = "select * from student where id in(?,?)";
try {
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, 1);
preparedStatement.setInt(2, 2);
ResultSet resultSet = preparedStatement.executeQuery();
// 这是目前游标的位置
System.out.println("查到数据数是" + resultSet.getRow());
while (resultSet.next()) {
int id = resultSet.getInt(1);
String sex = resultSet.getString(2);
String name = resultSet.getString(3);
String addr = resultSet.getString(4);
int teacher_id = resultSet.getInt(5);
UserData userData = new UserData(id, sex, name, addr,
teacher_id);
UserData.userDatas.add(userData);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0; i < UserData.userDatas.size(); i++) {
System.out.println(UserData.userDatas.get(i));
}
}
预编译和一般查询不同之处在于使用了PreparedStatement。可以操作占位符比较方便
4、事务处理
/**
* 事务处理
*
* 注意其中的事务决定于connection
*/
public void transac() {
try {
connection.setAutoCommit(false);
Statement transacStatement = connection.createStatement();
String sex = "m";
String name = "aaaaaaa";
String addr = "addrrrrrrr";
String sql = "insert into student (sex,name,addr,teacher_id) "
+ "values ('" + sex + "','" + name + "','" + addr
+ "',teacher_id)";
statement.execute(sql);
connection.rollback();
// connection.commit();
String sql1 = "insert into student (sex,name,addr,teacher_id) "
+ "values ('" + sex + "','" + name + "','" + addr
+ "',teacher_id)";
statement.execute(sql1);
connection.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这里sql没有执行成功,sql1执行成功了。根据事务我们可以处理一些突发错误。
分享到:
相关推荐
JDBC学习笔记 JDBC(Java DataBase Connectivity)是一种Java程序语言访问数据库的标准接口。它使得Java程序可以连接到各种不同的数据库管理系统,例如Oracle、SQL Server、MySQL、DB2、Sybase等。 JDBC的概念 ...
**JDBC学习笔记** 在Java开发中,JDBC(Java Database Connectivity)是连接数据库的关键技术。它是Java API,允许Java程序与各种类型的数据库进行交互。本笔记将深入探讨JDBC的核心概念、工作原理以及实际应用。 ...
### JDBC学习笔记知识点详解 #### 一、JDBC原理概述 **JDBC**(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC...
JDBC的学习笔记涵盖了从基本概念到实际操作的各个方面,对于初学者来说是一份很好的参考资料。通过学习JDBC,开发者能够有效地在Java应用程序中集成数据库功能,实现数据的增删改查以及与存储过程的交互。理解和掌握...
jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子
"JDBC学习笔记总结" JDBC(Java Database Connectivity)是一种Java API,用于连接和操作关系数据库。下面是JDBC学习笔记的总结: 连接到数据库的方法 1. ODBC(Open Database Connectivity):是一个以C语言为...
在本篇JDBC学习笔记中,我们将深入探讨JDBC的基础知识、核心概念以及实际应用。 一、JDBC基础 1. JDBC驱动程序:JDBC驱动是连接Java应用程序和数据库之间的桥梁。根据实现方式,JDBC驱动分为四种类型:类型1(JDBC...
总的来说,"达内jdbc学习笔记"涵盖了JDBC基础、数据库连接、SQL执行、结果集处理、事务管理和性能优化等多个关键知识点,对Java开发者来说是宝贵的参考资料。通过深入学习和实践,可以熟练地使用Java进行数据库操作...
jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子
jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子jdbc 学习 笔记 代码例子
本篇JDBC学习笔记将深入探讨JDBC的核心概念、操作步骤以及最佳实践。 **一、JDBC基本概念** 1. **驱动程序**:JDBC驱动程序是Java应用程序与数据库之间的桥梁,分为四种类型:JDBC-ODBC桥接驱动、本地API驱动、...
jdbc学习用笔记和代码例子jdbc学习用笔记和代码例子jdbc学习用笔记和代码例子
**JDBC学习笔记** Java Database Connectivity (JDBC) 是Java平台中用于与各种数据库进行交互的一组接口和类。它是Java SE的一部分,允许Java应用程序连接到数据库,执行SQL语句,处理结果集,并进行事务管理。这篇...
JDBC 学习笔记+代码整理
### 传智播客JDBC学习笔记精要 #### JDBC简述与连接 JDBC(Java Database Connectivity)是Java中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。在传智播客的JDBC...
**JDBC学习笔记教程文档** **一、JDBC概述** 1.1 **什么是JDBC** JDBC(Java Database Connectivity)是Java语言与各种数据库交互的一种标准接口,由Sun Microsystems公司开发,它允许Java应用程序通过Java代码来...
JDBC学习笔记.txt
Java开发 - 尚硅谷JDBC学习笔记是一套深入解析Java数据库连接(JDBC)技术的教程,涵盖了从基础到进阶的各种知识点。JDBC是Java编程语言中用于访问数据库的标准应用编程接口,它允许程序员使用Java来执行SQL语句,...