java-jdbc编程实例讲解

       用笔者自己的话来讲,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编程有帮助,请大家点个赞鼓励一下笔者,谢谢!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值