- 数据库操作
- 数据库基础数据库是一种 存储结构, 允许使用各种格式 输入、处理、检索 数据,且不用在每次需要数据时 重新输入数据。
- select 语句: select语句 用于查询数据表中的数据。select 语句 语法:
select 所选字段列表 from 数据表名
where 条件表达式 group by 字段名 having 条件表达式
order by 字段名
- insert 语句: insert语句 用于向数据表中插入新数据。insert 语句 语法:
insert into 表名[(字段1) , (字段2)]
valuse(属性值1 , 属性值2)
- update 语句: update语句 用于修改数据表中的数据。 update 语句 语法:
update 数据表名 set 字段名 = 新的字段值 where 条件表达式
- delete 语句: delete语句 用于删除数据表中的数据。 delete 语句 语法:
delete from 数据表名 where 条件表达式
- 连接数据库 访问数据库的步骤:首先 加载驱动程序(仅需要在第一次访问数据库时加载一次),然后每次访问数据时创建一个Connection对象,然后接着 执行SQL语句,最后完成数据库操作后, 依次销毁前面所创建的Connection对象、释放数据的链接。连接数据库 实例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Demo {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动
String url = "jdbc:mysql://127.0.0.1:3306/java_learn";// 数据库地址
String userName = "root";// 数据库用户名
String passord = "asd123";// 数据库密码
Connection con = DriverManager.getConnection(url,userName,passord);// 连接数据库
System.out.println(con);
con.close();// 关闭数据库
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
- 数据查询数据的 查询主要通过 Statement接口(执行SQL语句) 和 ResultSet接口(存储查询结果) 实现。Statement接口中的方法:方法 介绍 next(); 指针向下一行。 first(); 指针回到第一行。 last(); 指针回到最后一行。ResultSet接口中的方法:返回类型: getInt(); getDouble(); getString(); getObject();重载方法: getString(String 列名); getString(int 第几列);数据查询 实例:
import java.sql.*;
public class Demo1 {
public static void main(String[] args) {
Connection connection = null;// 声明Connection对象(连接接口)
Statement statement = null;// 声明Statement对象(发送SQL接口)
ResultSet resultSet = null;// 声明ResultSet对象(结果集接口)
try {
Class.forName("com.mysql.cj.jdbc.Driver");// 加载驱动程序
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java_learn", "root", "asd123");// 与数据库连接
statement = connection.createStatement();// 创建Statement对象
resultSet = statement.executeQuery("select * from java_learn.java_1433");// 执行SQL语句
while (resultSet.next()) {// 判断resultSet有没有下一行
int id = resultSet.getInt("id");// 获取列名为id的值
String name = resultSet.getString(2);// 获取第2列的值
String sex = resultSet.getString("sex");// 获取列名为sex的值
String birthday = resultSet.getString(4);// 获取第4列的值
System.out.println("编号=" + id + " 姓名=" + name + " 性别=" + sex + " 生日=" + birthday);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {// 依次关闭数据库连接资源
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
- 动态查询在程序中 不断向数据库发送 SQL语句 ,会 增加数据库中 SQL解释器 的 负担,从而 降低 SQL语句 的执行速度。为了解决这个问题,可以使用 Connection对象 的 p repareStatement(String sql)方法 对 SQL语句 进行 预处理 , 将这个命令 封装在 PreparedStatement对象 中,再通关 调用 PreparedStatement对象 的对应方法执行 底层的命令,就可以减轻SQL解释器的负担。在SQL进行预处理时,可以使用 通配符 ” ? ” 来代替任何值:
PreparedStatement preparedStatement = connection.prepareStatement("select * from java_learn.java_1434 where name = ?");
preparedStatement.setString(1,"name");
动态查询 实例:
import java.sql.*;
public class Demo2 {
public static void main(String[] args) {
Connection connection = null;// 声明Connection对象(连接接口)
try {
Class.forName("com.mysql.cj.jdbc.Driver");// 加载驱动程序
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java_learn", "root", "asd123");// 与数据库连接
String sql = "select * from java_learn.java_1434 where name like ? and id = ?";// SQL语句
PreparedStatement preparedStatement = connection.prepareStatement(sql);// 执行SQL语句
preparedStatement.setString(1,"小%");
preparedStatement.setInt(2,1);// 将数据库中id为1的值返回给第二个通配符
ResultSet resultSet = preparedStatement.executeQuery();
System.out.println("id\tname");
while (resultSet.next()){
System.out.println(resultSet.getInt(2)+"\t"+resultSet.getString(1));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {// 依次关闭数据库连接资源
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
- 添加、修改、删除记录Java中可以通过 PreparedStatement对象 动态地对数据表中 原有数据进行修改操作,并通过 executeUpdate()方法 进行 更新语句的操作。添加、修改、删除记录 实例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Demo3 {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java_learn","root","asd123");
statement = connection.createStatement();
// region 插入数据
String sql1 = "insert into java_learn.java_1435(id,name) values('12','大明')";// 插入id,name (id:12、name:大明)
int result1 = statement.executeUpdate(sql1);// 执行修改权限的SQL
System.out.println("有多少行记录被修改:"+result1);
// endregion
// region 修改数据
String sql2 = "update java_learn.java_1435 set name = '中明' where id = 12";// 修改 id为12 的 name为中明
int result2 = statement.executeUpdate(sql2);
System.out.println("有多少行记录被修改:"+result2);
// endregion
// region 删除数据
String sql3 = "delete from java_learn.java_1435 where id = 12";// 删除id为12的值(整一行)
int result3 = statement.executeUpdate(sql3);
System.out.println("有多少行记录被修改:"+result3);
// endregion
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
Original: https://www.cnblogs.com/TeaTracing/p/16178897.html
Author: TeaTracing
Title: 数据库操作
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622527/
转载文章受原作者版权保护。转载请注明原作者出处!