public class DemoJDBC {
public static void main(String[] args) throws Exception {
//1.导入驱动jar包
//2.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3.获取数据库连接对象(连接到数据库)
Connection conn = DriverManager.getConnection("jdbc:masql://localhost:3306/db05", "root", "password");
//4.定义sql语句
String sql = "update account set balance = 500 where id =1";
//5.获取执行sql的对象
Statement stmt = conn.createStatement();
//6.执行sql
int count = stmt.executeUpdate(sql);
//7.处理结果
System.out.println(count);
//8.释放资源
stmt.close();
conn.close();
}
}
其中的对象:
-
:驱动管理对象DriverManager
-
:数据库连接对象Connection
-
:执行sql的对象Statement
-
:结果集对象ResultSet
-
:执行sql的对象PreparedStatement
对象详解:
1. DriverManager
:驱动管理对象
DriverManager
- 功能
- 注册驱动:告诉程序该使用哪一个数据库驱动jar包
- 获取数据库连接
url:
jdbc:mysql://ip:端口号/数据库名称
例:jdbc:mysql://localhost:3306/db05
如果是本地localhost:3306可以省略
jdbc:mysql:///db05
2. Connection
:数据库连接对象
Connection
- 功能
- 获取执行 sql 的对象
createStatement
PreparedStatement
- 管理事务
开启事务:提交事务:
setAutoCommit(false)
回滚事务:
commit()
rollback()
3. Statement
:执行sql的对象
Statement
- 功能:执行sql
boolean execute(sql); 可以执行任意的sq1,了解
int executeUpdate(sql); 执行DML(insert,update,delete),DDL(create,alter,drop)
返回值代表影响的行数
ResultSet executeQuery(sql) 执行DQL(select)
- 练习
- account表添加一条记录
- account表修改记录
- account表删除一条记录
JAVA单排日记-2020/3/14-JDBC-使用步骤详解
package JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
public class DemoAccount {
public static void main(String[] args) {
Statement stamt=null;
Connection conn=null;
try {
//1.导入驱动jar包
//2.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3.获取数据库连接对象(连接到数据库)
conn = DriverManager.getConnection("jdbc:mysql:///db05","root","root");
//4.定义sql语句
String sql01="insert into account(name,balance) values ('wangwu',1200)";
String sql02="update account set balance = 1000 where name = 'zhangsan'";
String sql03="delete from account where id=10";
//5.获取执行sql的对象
stamt = conn.createStatement();
//6.执行sql
int[] arr=new int[3];
arr[0] = stamt.executeUpdate(sql01);
arr[1] = stamt.executeUpdate(sql02);
arr[2] = stamt.executeUpdate(sql03);
//7.处理结果
System.out.println(Arrays.toString(arr));
}catch (Exception e){
System.out.println(e.getMessage());
}finally { //8.释放资源
if (stamt!=null){
try {
stamt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
4. ResultSet
:结果集对象
ResultSet
- 功能:将结果封装,方便使用方法调用其中数据
- 方法:
-
:游标向下移动一行,从表顶部移到第一行数据next()
-
:获取结果集中xxx类型的数据,getxxx(参数)
xxx:代表数据类型如:,
int getInt()
string getstring()
参数:
1.int:代表列的编号,从1开始如:getstring(1)
2.string:代表列名称。如:getDouble(“balance")
- 练习:
JAVA单排日记-2020/3/14-JDBC-使用步骤详解
package JDBC;
import java.sql.*;
import java.util.Arrays;
public class DemoSetReuslt {
public static void main(String[] args) {
Statement stamt=null;
Connection conn=null;
try {
//1.导入驱动jar包
//2.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3.获取数据库连接对象(连接到数据库)
conn = DriverManager.getConnection("jdbc:mysql:///db05","root","root");
//4.定义sql语句
String sql = "select * from account";
//5.获取执行sql的对象
stamt = conn.createStatement();
//6.执行sql
ResultSet res = stamt.executeQuery(sql);
//7.处理结果
res.next();//游标下移到第一行
String name = res.getString(2);//获取第一行第二列
int n = res.getInt("balance");//获取第一行,列名为balance
System.out.println("姓名:"+name+" 工资:"+n);
res.next();//游标下移到第2行
String name2 = res.getString(2);//获取第2行第二列
int n2 = res.getInt(3);//获取第2行,列名为balance
System.out.println("姓名:"+name2+" 工资:"+n2);
}catch (Exception e){
System.out.println(e.getMessage());
}finally { //8.释放资源
if (stamt!=null){
try {
stamt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
- 注意:循环遍历
- 游标向下移动一行
- 判断是否有数据(有数据:
)
next() =true
- 获取数据
package JDBC;
import java.sql.*;
import java.util.Arrays;
public class DemoSetReuslt {
public static void main(String[] args) {
Statement stamt=null;
Connection conn=null;
try {
//1.导入驱动jar包
//2.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3.获取数据库连接对象(连接到数据库)
conn = DriverManager.getConnection("jdbc:mysql:///db05","root","root");
//4.定义sql语句
String sql = "select * from account";
//5.获取执行sql的对象
stamt = conn.createStatement();
//6.执行sql
ResultSet res = stamt.executeQuery(sql);
//7.处理结果
while (res.next()){
String name = res.getString(2);
int n = res.getInt("balance");
System.out.println("姓名:"+name+" 工资:"+n);
}
}catch (Exception e){
System.out.println(e.getMessage());
}finally { //8.释放资源
if (stamt!=null){
try {
stamt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}