idea控制台实现部分sql语句
在此之前。我们需要知道如何连接数据库
JDBC操作数据库的步骤
1.首先在项目根目录创建l文件夹,放入jdbc驱动程序,然后Add As Library
2.使用驱动管理器来获得连接—获得一个数据库连接对象Connection
3.使用Connection创建PreparedStatement语句对象
4.使用PreparedStatement对象执行SQL语句(executeQuery())
5.然后返回执行结果
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class JDBCUTILS {
private static DataSource dataSource;
static {
InputStream stream1 = null;
Properties properties = null;
try {
stream1 = JDBCUTILS.class.getClassLoader().getResourceAsStream("jdbc.properties");
properties = new Properties();
properties.load(stream1);
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
stream1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//通过此方法获得Connection对象
public static Connection getConnection(){
Connection connection = null;
try {
connection = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
//关闭资源
public static void closeAll(Connection con, PreparedStatement statement1, ResultSet set1){
if(con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement1 != null){
try {
statement1.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(set1 != null){
try {
set1.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void closeAll(Connection con, PreparedStatement statement1){
if(con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement1 != null){
try {
statement1.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
以上是将连接数据和释放资源进行封装,写成方法。后面调用方法即可使数据库连接成功,可以进行下一步操作。
1.select语句
String sql = "select * from student";//查询语句
PreparedStatement pstm = con.prepareStatement(sql);
//.使用PreparedStatement对象执行SQL语句
ResultSet rs = pstm.executeQuery();
//定义集合用来装Emp对象
List<emp> arr = new ArrayList<>();
//通过循环将查询到的写进集合中
while (rs.next()) {
//根据字段名称获取表中的数据
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
//把数据封装到Emp对象中
Emp empt = new Emp();
//一行数据就封装成了一个emp对象
emp.setid(id);
emp.setname(name);
emp.setage(age);
//把当前行封装后的Emp对象装载到List集合中
arr.add(emp);
}
//输出结果
System.out.println(arr);
//进行判断,关闭资源
if (rs != null) {
rs.close();
}
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
}
2.Insert语句
//新增语句
String sql = "insert into emp(id,name,age) values (?,?,?)";
PreparedStatement pstm = con.prepareStatement(sql);
//传入数据
Emp emp = new Emp();
//此处的参数也可以设置为在手动输入的数据
emp.setid(5);
emp.setname("张三");
emp.setage(18);
//预处理对象的sql语句有?所以需要进行传参
pstm.setObject(1,emp.setid());
pstm.setObject(2,emp.setname());
pstm.setObject(3,emp.setage());
//执行更新(增删改查都叫做数据库的更新,更新返回的是影响的行数)
int n = pstm.executeUpdate();
//6.判断影响的行数n>0表示插入成功,否则插入失败
if(n>0){
System.out.println("插入数据成功");
}else{
System.out.println("插入数据失败");
}
//7.释放资源
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
}
3.update语句
//查询语句
String sql = "update emp set name=?,age=? where id=?";
PreparedStatement pstm = con.prepareStatement(sql);
//5.传参并执行sql语句
//此处的参数也可以设置为在手动输入的数据,设置同上一个方法
pstm.setObject(1,emp.setid());
pstm.setObject(2,emp.setname());
pstm.setObject(3,emp.setage());
int n = pstm.executeUpdate();
//判断执行结果
if(n>0){
System.out.println("修改成功");
}else{
System.out.println("修改失败");
}
//7.资源的释放
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
4.delete语句
//删除语句
String sql = "delete from emp where id =?";
PreparedStatement pstm = con.prepareStatement(sql);
//预处理对象的sql语句有?,所以需要传参
//此处的参数也可以设置为在手动输入的数据
int id =3;
pstm.setObject(1,id);
//执行更新操作(增删改查都是更新操作,返回的结果是影响的行数)
int n =pstm.executeUpdate();
//判断影响的行数n>0表示删除成功,否则删除失败
if(n>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
//7.释放资源
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
}
以上的语句中大部分相同的代码还可以封装为方法调用。