JDBC学习笔记

JDBC学习笔记

1. 安装MySql(略)
  • 验证是否安装成功(需先加入环境变量):用cmd连接数据库测试。在cmd中连接数据库。
mysql -uroot -p123456
2. jdbc入门案例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class TestJDBC {
    public static void main(String[] args) {
        Statement s = null;
        Connection c = null;
        try {
            /*Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.*/
            //新版驱动自动注册。所以以下两句没有必要。
            //Class.forName("com.mysql.jdbc.Driver");
            //System.out.println("数据库驱动加载成功");
            c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/eesy?useSSL=false", "root", "123456");
            System.out.println("数据库连接成功,打印");
            System.out.println(c);//输出com.mysql.cj.jdbc.ConnectionImpl@1877ab81。打印的是实例对象的全名和地址
           s = c.createStatement();//用于执行SQL语句
           String sql = "select * from account";
            ResultSet re = s.executeQuery(sql);
            //.next()方法查询下一条
            while(re.next()){
            int id = re.getInt(1);
            String name = re.getString(2);
            float money = re.getFloat(3);
            System.out.printf("%d\t%s\t%f\n",id,name,money);
            }
            sql = "insert into account values(null,'i_am_name',23)";
            s.execute(sql);
            /*插入名为count0到count9的十个数据*/
            for (int i = 0; i < 10; i++) {
                sql = "insert into account values(null," + "'count" +i +"'" +",23)";
                //合并语句就是 "insert into account values(null, counti,23)";
                s.execute(sql);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            System.out.println("i am finally");
            if (s != null)
                try {
                    s.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            if (c != null) {
                try {
                    c.close();
                } catch (SQLException e){
                    e.printStackTrace();
                }
                /*也可以使用try-with-resource的方式自动关闭连接,因为Connection和Statement都实现了AutoCloseable接口*/
            }
        }
    }
}
3.实现增删改查
//和上面的例子类似。
//增
sql = "insert into account values(null,'name',23)";
//删
sql = "delete from account where age = 23"
//改
sql = "update account set name = 'marry' where id = 1";
//查
sql = "select * from account";
  • 分页查询:select * from account limit start count; 查询从start开始的count条数据。注意数据库中第一条内容下标是0。用于数据量太多内存可能不够的情况。
  • PreparedStatement
    • 用于SQL语句更好地拼接。
    • 安全性高,放置SQL注入攻击
    • 预编译,大批量操作时,效率更高
String sql = "insert into account values(?,?,?)";
PreparedStatement ps = c.prepareStatement(sql);
ps.setInt(1,2);
ps.setString(2,"neo");
ps.setFloat(3,(float)2.34);
ps.execute();
  • excuteupdate()
    • execute可以执行查询语句
    • 然后通过getResultSet,把结果集取出来
    • executeUpdate不能执行查询语句
    • execute返回boolean类型,true表示执行的是查询语句,false表示执行的是insert,delete,update等等
    • executeUpdate返回的是int,表示有多少条数据受到了影响
小结
  • 1.注册驱动(新版本已废弃)
  • 2.通过DriverManagement.getConnection()建立连接。c = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/eesy?useSSL=false”, “root”, “123456”);
  • 3.通过连接对象,建立Statement对象 Statement s = c.createStatement();
  • 4.声明语句:String sql = “select * from account”;
  • 5.通过Statement对象,执行语句,如果时查询语句,则用.executeQuery(String)方法,返回Result对象。如果不是查询语句,用.execute(String)方法,返回布尔值,true表示执行的是查询语句,false表示执行的是insert,delete,update等等
    • ResultSet re = s.executeQuery(sql);
    • Boolean isSuccess = s.execute(sql);
c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/eesy?useSSL=false", "root", "123456");
Statement s = c.createStatement();
String sql = "select * from account";
ResultSet re = s.executeQuery(sql);
Boolean isSuccess = s.execute(sql);
//建立连接,通过连接对象得到Statement对象,通过Statement对象的方法,传入SQL语句并执行。
  • 对于preparedStatement对象。
Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/eesy?useSSL=false", "root", "123456");
String sql = "insert into account (name,money)values(?,?)";
PreparedStatement ps = c.prepareStatement(sql);
ps.setString(1, "neo");//通过索引赋予参数,从1开始
ps.setFloat(2, 1);
ResultSet re = ps.executeQuery();
//建立连接,通过连接对象,传入预定义SQL语句,得到PreparedStatement对象,设置PreparedStatement参数,执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值