Jdbc--API

API详解:
实现JDBC操作的四个核心对象:
Drivermanager : 注册驱动 Class.forName(“com.mysql.jdbc.Driver”);
DriverManager是用于管理一组jdbc驱动程序的一个基本服务,
DriverManager.registerDriver(new Driver());注册了两次,所以一般不用。

Connection:一个连接    driver.getConnection();
Connection所有与数据库交互都是基于此连接对象的。
通过Connection可以获取执行sql语句的对象;可以获取一些关于事务操作。
URL:SUN公司与数据库厂商之间的一种协议。
jdbc:mysql://localhost:3306/day06
协议 子协议  IP :端口号 数据库
mysql: jdbc:mysql://localhost:3306/day14 或者 jdbc:mysql:///day14(默认本机连接,端口是3306)
oracle: jdbc:oracle:thin:@localhost:1521:sid
thin(客户端无需安装其他应用程序就可以访问服务端)
        Properties info = new Properties();//要参考数据库文档
        info.setProperty("user", "root");
        info.setProperty("password","root");
getConnection(String url, Properties info)
getConnection(String url)
driver.getConnection("jdbc:mysql://localhost:3306/day14?user=root&password=root");

Statement: 操作sql语句,并返回相应结果的对象(小货车)
接口的实现在数据库驱动中。用于执行静态 SQL 语句并返回它所生成结果的对象。
1.    可以执行sql语句
ResultSet executeQuery(String sql)
一般是用于执行select语句。
int  executeUpdate(String sql)
一般用于执行insert update delete语句。
返回值int类型,代表对数据库中几条记录有影响的行数。如果不为0可以判断insert,update,delete执行成功的。
boolean execute(String sql)
用于执行任意sql语句
如果返回值为false,代表执行的不是select语句。返回true,就代表是select语句。
2.    还可以通过Statement来进行批处理
addBatch(String sql);  添加到批处理
executeBatch(); 批量执行
clearBatch(); 清空批处理

sql注入:【name' or '1'='1】
由于没有对用户输入进行充分检查,而SQL又是拼接而成,在用户输入参数时,在参数中添加一些SQL 关键字,达到改变SQL运行结果的目的,也可以完成恶意攻击。
PreparedStatement预编译:
1.    获取PreparedStatement
PreparedStatement pst=Connection.prepareStatement(String sql);
2.    使用PreparedStatement时,它的参数是一个sql语句,在sql语句中的变量可以使用”?”占位符。
3.    在得到PreparedStatement后,可以使用它提供的setXxx()方法来完成对”?”占位符的赋值
setXxx(int index,Object obj);
第一个参数代表的是第几个占位符,从1开始。
第二个参数是对占位符赋的值
4.    以上操作都完成后,要想真正的执行sql语句,必须通过PreparedStatement对象来调用
executeUpdate()   executeQuery()方法。
注意:使用PreparedStatement来执行sql语句时调用的executeUpdate或executeQuery方法是无参数的。
PreparedStatement的优点:
1.    它更加安全,性能更高
2.    可以使用占位符,不需要在拼接字符串
 
ResultSet接口: 结果集(客户端存表数据的对象)
ResultSet它代表的是执行select操作后得到的结果。相当于是一张表。
它提供一个游标,默认游标指向结果集第一行之前。调用一次next(),游标向下移动一行。
提供一些get方法。
将结果集封装到JavaBean的有关方法:
Object getObject(int columnIndex); 根据序号取值,索引从1开始
Object getObject(String ColomnName); 根据列名取值。
所有get方法都有参数,参数有两种,int:代表的是表中列的序号。String类型,代表的是表中列的名称。
boolean next()    将光标从当前位置向下移动一行
boolean previous()    游标从当前位置向上移动一行
int getInt(int colIndex)    以int形式获取ResultSet结果集当前行指定列号值
int getInt(String colLabel)    以int形式获取ResultSet结果集当前行指定列名值
float getFloat(int colIndex)    以float形式获取ResultSet结果集当前行指定列号值
float getFloat(String colLabel)    以float形式获取ResultSet结果集当前行指定列名值
String getString(int colIndex)    以String 形式获取ResultSet结果集当前行指定列号值
String getString(String colLabel)    以String形式获取ResultSet结果集当前行指定列名值
void close()    关闭ResultSet 对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值