A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© doglovely 中级黑马   /  2016-4-4 11:43  /  423 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

jdbc四大配置参数:
driverClassName:
com.mysql.jdbc.Driver,mysql提供的
Driver中的d必须大写
url:
jdbc的协议;jbbc:厂商的名字;//主机
jdbc:mysql://localhost:3306/mydb3
mysql后跟://
username:root
password:root
驱动就是jdbc的实现。
Class.forName();
//jdbc的接口和包
Connection con=DriverManager.getConnection(url,username,password);
System.out.println(con);
驱动管理器:
对数据库的增删改:
Statement语句发送器,它的功能就是向数据库发送sql语句。
int executeUpdate(String sql),它发送dml,ddl(执行更新)
Statement stmt = con.createStatement();
String sql = "UPDATE stu SET name='xiaoli' WHERE number=2 ";
//影响了几行
int r=stmt.executeUpdate(sql);

关键字:DriverManager,getConnection,createStatement,executeUpdate
executeQuery,ResultSet(结果集)next,getXxx
查询:会返回表格
String sql=select * from stu;
ResultSet rs =stmt.executeQuery(sql);
3.解析ResultSet:
内部有个行光标,在第一行之前beforeFirst,默认光标位置
boolean next(),移动光标。最后一行之后AfterLast
getXxx(1)方法。getInt("empno");
getInt() getString() getDouble()
while(rs.next()){
   int empno =rs.getInt(1);
}

4.关闭资源
rs.close();
stmt.close();
con.close();//必须要关,不管就死


ResultSet都有哪些方法:
next(),getXxx(),
getMetaDate()返回的是一个元数据的结果集。
getColumnCount得到列数。

int count =  rs.getMetaDate().getColumnCount();
while(rs.next){
    for(int i=1;i<=count;i++){
                System.out.print(s.getString(i);
                 if(i<count){
                      syso(",");
}
  }
System.out.println();
}


结果集有三种特性:
是否可滚动
是否敏感
是否更新
con.createStatement();
默认都可以:


预处理:PreparedStatement
是Statement接口子接口
防止sql攻击
提高代码的维护性,可读性
提高效率
prepareStatement(sql模板);?生来就跟sql模板绑定
1.所有的参数用?来代替。
String sql="select * from stu where username=? and password=?"
PreparedStatement st=con.prepareStatement(sql);
2.为参数赋值
pt.setString(1,username);1代表第一个问好
生来就跟sql模板绑定
pt.executeQuery();


PreparedStatement:
前提:连接的数据库必须支持预处理!几乎没有不支持的!
每个pstmt都与一个sql模板绑定在一起,先把sql模板给数据库,数据库先进行校验,再进行编译。执行时只是把参数传递过去而已!
若二次执行时,就不用再次校验语法,也不用再次编译!直接执行!

预处理就是先编译?

JdbcUtils.class.getClassLoader()
加载配置文件成properties对象。
InputStream in = DaoFactory.class.getClassLoader.getResurceAsStream();
Perperties p=new Perperties();
p.load();

class.forName().newInstance();
重头到尾都没有类的实现类对象。
PreparedStatement的方法都没有参数。

ORM--->对象关系映射
表转换成对象
对象转换程表
User.setName(rs.getString());
User.setName(rs.getString());
User.setName(rs.getString());
面向接口编程


jdbc不能出现在Dao以外的地方
mediumBlob


把MP3保存到数据库中。
难点:是把blob变成文件,再把文件转变成blob;

批处理:pstmt推向内部有集合。
pstmt.addBatch();
pstmt.executeBatch();
当前数据库不支持批处理。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马