连接数据库以及JDBC增删改查操作"/>
JDBC连接数据库以及JDBC增删改查操作
一,创建数据库语句:
CREATE DATABASE school;
二,创建表语句:
CREATE TABLE student(
stuId INT PRIMARY KEY AUTO_INCREMENT,
stuName VARCHAR(20),
stuSex VARCHAR(2),
stuAge INT,
stuAddress VARCHAR(50)
);
三,插入数据语句:
INSERT INTO student(stuName,stuSex,stuAge,stuAddress)VALUES('张三','男',18,'河南');
INSERT INTO student(stuName,stuSex,stuAge,stuAddress)VALUES('李四','男',19,'江苏');
INSERT INTO student(stuName,stuSex,stuAge,stuAddress)VALUES('小红','女',20,'浙江');
INSERT INTO student(stuName,stuSex,stuAge,stuAddress)VALUES('小明','男',21,'北京');
四,JDBC进行数据库的操作
先在 IDEA 中创建实体类:类的名字对应数据库表的名字、类的属性对应表的字段。
public class Student {//属性private int stuId;private String stuName;private String stuSex;private int stuAge;private String stuAddress;//方法public int getStuId() {return stuId;}public String getStuName() {return stuName;}public String getStuSex() {return stuSex;}public int getStuAge() {return stuAge;}public String getStuAddress() {return stuAddress;}public void setStuId(int stuId) {this.stuId = stuId;}public void setStuName(String stuName) {this.stuName = stuName;}public void setStuSex(String stuSex) {this.stuSex = stuSex;}public void setStuAge(int stuAge) {this.stuAge = stuAge;}public void setStuAddress(String stuAddress) {this.stuAddress = stuAddress;}@Overridepublic String toString() {return "Student{" +"stuId=" + stuId +", stuName='" + stuName + '\'' +", stuSex='" + stuSex + '\'' +", stuAge=" + stuAge +", stuAddress='" + stuAddress + '\'' +'}';}
}
JDBC的增删改查操作
junit的用法补充:
junit可以使方法脱离main方法直接执行,方便进行程序测试。
JDBC的全查操作 查询获得的结果集。结果集的游标默认指向的是数据标题行,需要使用 next() 方法移动游标,指向真正的数据行。该 方法的返回值是boolean类型,如果向下移动有数据行返回true,否则返回false。
JDBC全查的代码操作
import org.junit.Test;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class StudentTest {private String driver="com.mysql.cj.jdbc.Driver";private String url="jdbc:mysql://localhost:3306/school";private String username="root";private String password="root";@Testpublic void testSelectAll() throws ClassNotFoundException, SQLException {//JDBC操作数据库的步骤//1.首先在项目根目录创建lib文件夹,放入jdbc驱动程序,然后Add As Library//2.加载数据库驱动Class.forName(driver);//3.使用驱动管理器来获得连接---获得一个数据库连接对象ConnectionConnection con= DriverManager.getConnection(url, username, password);//4.使用Connection创建PreparedStatement预处理对象---PreparedStatement对象可以执行带 ? 的sql语句String sql="select * from student";PreparedStatement pstm = con.prepareStatement(sql);//5.使用PreparedStatement对象执行SQL语句,获得ResultSet结果集对象ResultSet rs = pstm.executeQuery();//6.操作判断--增删改返回的是影响的行数(返回值是int),只有查询获得结果集(返回值ResultSet)//让结果集的游标不断的往下移动,直到没有数据的时候结束循环List<Student> studentList=new ArrayList<>();while (rs.next()){//根据字段名称获取表中的数据int stuId=rs.getInt("stuId");String stuName=rs.getString("stuName");String stuSex=rs.getString("stuSex");int stuAge=rs.getInt("stuAge");String stuAddress=rs.getString("stuAddress");//把以上数据封装到Student对象中Student student=new Student();student.setStuId(stuId);student.setStuName(stuName);student.setStuSex(stuSex);student.setStuAge(stuAge);student.setStuAddress(stuAddress);//把当前行封装后的Student对象装载到 List集合中studentList.add(student);}System.out.println(studentList);//7.回收资源,先关闭rs结果集对象 再pstm预处理对象 最后con连接对象if(rs!=null){rs.close();}if(pstm!=null){pstm.close();}if(con!=null){con.close();}}
}
JDBC添加的代码操作
import org.junit.Test;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class StudentTest {private String driver="com.mysql.cj.jdbc.Driver";private String url="jdbc:mysql://localhost:3306/school";private String username="root";private String password="root";@Testpublic void testAdd() throws ClassNotFoundException, SQLException {//1.导入驱动包//2.通过反射加载驱动程序Class.forName(driver);//3.通过驱动管理器获得数据库的连接对象Connection con= DriverManager.getConnection(url, username, password);//4.通过连接对象,获取SQ预处理对象String sql="insert into student(stuName,stuSex,stuAge,stuAddress)values(?,?,?,?)";PreparedStatement pstm = con.prepareStatement(sql);//实际开发是前端页面传递过来的数据,此处我们直接模拟一组数据Student student=new Student();student.setStuName("李四");student.setStuSex("男");student.setStuAge(19);student.setStuAddress("江苏");//5.1预处理对象的sql语句有 ? 所以需要进行传参pstm.setObject(1,student.getStuName());pstm.setObject(2,student.getStuSex());pstm.setObject(3,student.getStuAge());pstm.setObject(4,student.getStuAddress());//5.2执行更新(增删改都叫做数据库的更新,更新返回的是影响的行数)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)){pstm.close();}}
}
JDBC删除的代码操作
import org.junit.Test;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class StudentTest {private String driver="com.mysql.cj.jdbc.Driver";private String url="jdbc:mysql://localhost:3306/school";private String username="root";private String password="root";@Testpublic void testDel() throws ClassNotFoundException, SQLException {//1.导入驱动包//2.通过反射加载驱动程序Class.forName(driver);//3.通过驱动管理器获得数据库的连接对象Connection con= DriverManager.getConnection(url, username, password);//4.通过连接对象,获取SQ预处理对象String sql="delete from student where stuId=?";PreparedStatement pstm = con.prepareStatement(sql);//5.1预处理对象的sql语句有 ? 所以需要进行传参int stuId=2;pstm.setObject(1,stuId);//5.2执行更新(增删改都叫做数据库的更新,更新返回的是影响的行数)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();}}
}
更多推荐
JDBC连接数据库以及JDBC增删改查操作
发布评论