用笔者自己的话来讲,java的JDBC编程就是使用java语言实现对数据库的控制,将两个不同的事物之间建立起来联系。而如果想要进行JDBC编程,这里需要将一个jar包导入到建立的工程中去。
jar包链接:https://pan.baidu.com/s/1WfavGnOtx6GxB3XSWAk23w 提取码:91bp
步骤一:建立一个java工程,然后在根目录下新建一个文件夹并且命名为lib。(这里的名字可以随意取)
步骤二:将下载好的jar包直接拖入这个文件夹(从桌面直接拖到ieda中的lib文件夹中)。然后一路OK。
完成之后lib文件夹中就有了这个jar包,但是此时并不能使用它,别着急,下一步就是导入这个包,让它为我们所用。
步骤三:如图所示,进入根目录下的Open Module Settings之中,按下图所示步骤完成添加。
这时候jar包的添加已经完成,可以进行编程了。由于需要对数据库进行操作,所以需要事先准备一个数据库,这是笔者的数据库,接下里的操作将围绕此数据库来展开。
此时表中的数据如下:接下来对此数据库进行操作。
代码部分:
实现的函数有以下几个,将其写为接口来实现。
1.目标函数
public interface JdbcDemo {
//创建MemoGroup
public abstract Boolean createMemoGrup(MemoGroup memoGroup);
//通过ID查询MemoGroup;
public abstract MemoGroup queryMemGroupByld(Integer id);
//更新MemoGroup(name)
public abstract Boolean updateMemoGroup(MemoGroup memoGroup);
}
将数据库的表写为一个单独类MemoGroup;提供get/set方法和toString()方法。
2.数据库表的抽象类
package www.bitech.jdbc;
import javafx.util.converter.LocalDateTimeStringConverter;
import java.sql.Timestamp;
import java.time.LocalDateTime;
/**
* Created with IntelliJ IDEA
* Description:
* User:Light_Long
* Date:2019-06-29
* Time:14:58
*/
public class MemoGroup {
private Integer id;
private String name;
private LocalDateTime createtime;
private Timestamp modifytime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LocalDateTime getCreatetime() {
return createtime;
}
public void setCreatetime(LocalDateTime createtime) {
this.createtime = createtime;
}
public Timestamp getModifytime() {
return modifytime;
}
public void setModifytime(Timestamp modifytime) {
this.modifytime = modifytime;
}
@Override
public String toString() {
return "MemoGroup{" +
"id=" + id +
", name='" + name + '\'' +
", createtime=" + createtime +
", modifytime=" + modifytime +
'}';
}
}
3. 方法的具体实现
代码如下:
package www.bitech.jdbc;
import com.sun.org.apache.xpath.internal.operations.Bool;
import com.sun.xml.internal.ws.api.model.MEP;
import java.sql.*;
import java.time.LocalDateTime;
/**
* Created with IntelliJ IDEA
* Description:
* User:Light_Long
* Date:2019-06-29
* Time:15:07
*/
public class MyJdbcCase1 implements JdbcDemo {
@Override
public Boolean createMemoGrup(MemoGroup memoGroup) {
Connection connection = null;
//预编译命令
PreparedStatement statement = null;
ResultSet resultSet = null;
Integer number;
try {
//1.加载数据库的驱动JDBC驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接
String url = "jdbc:mysql://127.0.0.1:3306/memo?user=root&password=root";
connection = DriverManager.getConnection(url);
//执行命令
//准备sql语句
String str1 = memoGroup.getName();
LocalDateTime str2 = memoGroup.getCreatetime();
String sql = "insert into memo_group(name,created_time) values(?,?);";
//预编译命令的赋值
statement = connection.prepareStatement(sql);
//传入预编译命令的参数1
statement.setString(1,str1);
//将javazhong 中的timestamp转为localstamp;
statement.setTimestamp(2,Timestamp.valueOf(str2));
//执行sql语句
number = statement.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return true;
}
@Override
public MemoGroup queryMemGroupByld(Integer id) {
//连接
Connection connection = null;
//命令
PreparedStatement preparedStatement = null;
//结果
ResultSet resultSet = null;
//对象
MemoGroup memoGroup = new MemoGroup();
try {
//1.加载数据库的驱动JDBC驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接
String url = "jdbc:mysql://127.0.0.1:3306/memo?user=root&password=root";
connection = DriverManager.getConnection(url);
//执行命令
//准备sql语句
String sql = "select * from memo_group where id = id;";
//执行sql语句
preparedStatement = connection.prepareStatement(sql);
//保存结果
resultSet = preparedStatement.executeQuery();
//给所创建的对象赋值
if (resultSet.next()) {
int id1 = resultSet.getInt("id");
memoGroup.setName(resultSet.getString("name"));
Timestamp createTime = resultSet.getTimestamp("created_time");
memoGroup.setCreatetime(createTime.toLocalDateTime());
Timestamp modifyTime = resultSet.getTimestamp("modify_time");
memoGroup.setModifytime(modifyTime);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return memoGroup;
}
@Override
public Boolean updateMemoGroup(MemoGroup memoGroup) {
Connection connection = null;
ResultSet resultSet = null;
PreparedStatement preparedStatement = null;
Integer pop = 0;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/memo?user=root&password=root";
connection = DriverManager.getConnection(url);
Integer newid = memoGroup.getId();
String sql = "update memo_group set name = 'zhaotian' where id = ?;";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1,newid);
pop = preparedStatement.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return true;
}
public static void main(String[] args) {
MyJdbcCase1 myJdbcCase1 = new MyJdbcCase1();
MemoGroup memoGroup = new MemoGroup();
memoGroup.setCreatetime(LocalDateTime.now());
memoGroup.setName("看书");
memoGroup.setId(668);
Boolean pop = myJdbcCase1.createMemoGrup(memoGroup);
System.out.println(pop);
String str1 = myJdbcCase1.queryMemGroupByld(1).toString();
System.out.println(str1);
myJdbcCase1.updateMemoGroup(memoGroup);
}
}
测试结果如下图
程序的执行结果如下:
数据库的内容如下:
说明操作正常,数据库的内容与预想中的一样。
备注:上图运行完之后会发现运行结果会出现三条红色警告语句,此语句的问题以及解决方法都写的很清楚,笔者在此不做过多的解释,大家练习到这里的时候可以通读一下警告就会发现解决的方法,算是留了一个小小的疑问,有待读者解决。如果本篇文章对大家的jdbc编程有帮助,请大家点个赞鼓励一下笔者,谢谢!