JDBC+MySQL入门实战(实现CURD的例子) (3)

有了JDBC的环境只需编写正确的代码即可运行!对于项目最终的目录是这样的:

JDBC+MySQL入门实战(实现CURD的例子)

第二关 JDBC插入和查询

我们上面有讲过进行JDBC操作的6个步骤,但有些步骤不需要重复进行,比如加载驱动、建立连接、关闭等可以复用。此外,我们在项目中将MySQL中的数据和Java中的对象进行映射(即MySQL表中每一条记录可以生成一个Java对象),项目中函数的设计基于Java对象而非MySQL中数据字段,降低项目中各模块的耦合性。

预备工作

首先在student 类中编写以下内容,该类与MySQL数据库的student表对应。

public class student { private int id;//与student表得id对应 private String name;//与student表得name对应 private int age;//年龄与student表得age对应 private int high;//身高与student表high对应 //带id构造方法(查询时使用) public student(int id, String name, int age, int high) { this.id = id; this.name = name; this.age = age; this.high = high; } //不带id得构造方法(插入时候使用) public student(String name, int age, int high) { this.name = name; this.age = age; this.high = high; } //toString()方法,控制台打印测试使用 @Override public String toString() { return "student{" + "id=" + id + ", name=\'" + name + \'\\'\' + ", age=" + age + ", high=" + high + "}\n"; } //get set 方法,设置值,取值使用 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getHigh() { return high; } public void setHigh(int high) { this.high = high; } }

紧接着处理sqlmanage类,我们将JDBC的一些操作封装到这里面。在初始化函数中进行注册驱动、建立连接的操作。在sqlmanage中编写以下内容:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class sqlmanage { private Connection con=null;//数据库连接,从DriverManager的方法获得,用以产生执行sql的PreparedStatement public sqlmanage() throws SQLException, ClassNotFoundException { //step1 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); System.out.println("数据库驱动加载成功"); //step2 连接数据库 this.con = DriverManager.getConnection("jdbc:mysql://localhost:3306/boxuegu?useSSL=false","root","bigsai66"); System.out.println("数据库连接成功"); } public void close() throws SQLException { this.con.close();; } }

其中通过Connection建立连接,Connection是一个接口类。其功能是与数据库进行连接(会话)。建立Connection接口类对象:
Connection conn =DriverManager.getConnection(url, user, password);
其中url的格式要求为:

jdbc:mysql://<host>:<port>/<database_name>?property1=value1&property2=value2…

host为主机地址或者域名,本地可以用localhost或127.0.0.1.

database_name为MySQL中创建数据库名,本案例中数据库名为boxuegu。

property用来配置一些例如编码、时区等属性。

其中user为MySQL登录用户名,password为MySQL登录密码。

单个插入

MySQL插入的sql语句很简单:

insert into 表名 ( 字段1, 字段2,...字段n) value ( 值1, 值2,...值n );

我们JDBC中进行插入操作使用的sql满足上述规范,在sqlmanage中编写insertStudent(student student)函数用来插入单个学生记录,具体函数如下:

public void insertStudent(student student) throws SQLException { //创建sql语句 String sql="insert into student(name,age,high)value(?,?,?)"; //PreparedStatement能够对SQL语句进行预编译,这样防止了 SQL注入 提高了安全性。 PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,student.getName()); ps.setInt(2,student.getAge()); ps.setInt(3,student.getHigh()); //执行 sql 因为这里插入操作就不对结处理 ps.executeUpdate(); ps.close(); }

在test类中的编写insertTest()函数,用来测试插入三条学生的记录:

@Test public void insertTest() throws SQLException, ClassNotFoundException { sqlmanage sqlmanage=new sqlmanage(); sqlmanage.insertStudent(new student("bigsai",22,180)); sqlmanage.insertStudent(new student("bigpian",21,165)); sqlmanage.insertStudent(new student("doudou",20,160)); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjdsf.html