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();
当前数据库不支持批处理。 |
|