JDBC学习笔记(一)

1.  概念:Java DataBase Connectivity Java数据库连接 , Java语言操作数据库

JDBC本质:其实就是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类

2. 使用步骤

public static void main(String[] args) throws Exception{
        //1.导入驱动包
        //2.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //3.获取数据库连接对象Connection
        Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/db3?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","你的密码");
        //新版jdbc需要加上useUnicode=true&characterEncoding=UTF-8&useSSL=false
        //4.定义sql语句
        String sql = "update account set account = 500 where id = 1";
        //5.获取执行SQL语句的对象Statement
        Statement stmt = conn.createStatement();
        //6.执行sql,接受返回结果
        int count = stmt.executeUpdate(sql);
        //7.处理结果
        System.out.println(count);
        //8.释放资源
        stmt.close();
        conn.close();
    }

3.jdbc的各个对象

DriverManger:驱动管理对象

功能:1.注册驱动,static void registerDriver(Driver driver):注册与给定的驱动程序 DriverManager。

(mysql5后可忽略注册驱动,即Class.forName("com.mysql.cj.jdbc.Driver");可以忽略不写)

2.获取数据库连接

方法:static Connection getConnection(String url,String user,String password)

参数:url:指定路径  语法:jdbc:mysql://ip地址(域名):端口号/数据库名称(如果是本机数据库,且端口号默认3306,则可简写为:jdbc:mysql:///数据库名称 )

user:用户名   password:密码

Connection:数据库连接对象

功能:1.获取执行sql的对象  Statement   createStatement() ; PrepareStatement   prepareStatement(String sql)

2.管理事务:开启事务:setAutoCommit(boolean autoCommit) : 调用该方法设置参数为false

提交事务:commit()

回滚事务:rollback()

Statement:执行sql对象

执行sql  boolean execute(String sql):可以执行任意的sql   

int executeUpdate(String sql):执行DML(inseret,update,delete)语句; DDL(create,alter,drop) 语句

返回值:影响的行数,可以通过这个影响行数判断DML语句是否执行,返回值大于0则执行成功,否则就失败

ResultSet executeQuery(String sql):执行 DQL(select)语句

ResultSet:结果集对象

next():游标向下移动一行

getXxx(参数):获取数据

Xxx:代表数据类型   如:int getInt()  String getString()

int:代表列的编号,从1开始  如:getString(1)

String:代表列名称。如:getDouble(列的下标)

遍历:(与使用迭代器获取数据类似)

            //遍历获取
            while (rs.next()) {
                int id = rs.getInt(1);
                String name = rs.getString("name");
                double account = rs.getDouble(3);
                System.out.println(id+"---"+name+"---"+account);
            }

PreparedStatement:执行sql的对象

sql注入问题:在拼接sql时,有一些sql关键字参与字符串拼接,会造成安全性问题。

使用PrepareStatement对象来解决这类问题

预编译的sql:参数使用?作为占位符

如:

String sql = "select *from user where username = ? and password= ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,username);
pstmt.setString(2,password);
rs = pstmt.executeQuery();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值