jdbc知识总结

首先要引入对应的jar包
jdbc的连接Oracle数据库,操作封装,事务控制,批处理,分页查询
jdbc与MySql数据库
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------

1.jdbc连接数据库


//转载OracleDriver
把类装到内存里面,帮助jdbc找到jdbc接口的实现类
Class.forName("oracle.jdbc.OracleDriver");

String url="jdbc:oracle:thin:@172.16.9.99:1521:boson1";//@ip:port:sid
String user="jsd1302";//用户名
String pwd="jsd1302";//密码

Connection con = DriverManager.getConnection(url,user,pwd);//三个参数
//可以打印看一下//System.out.println(con);//打印看一下
-------------------------------------------------------------------------------
1.连接
  Class.forName("oracle.jdbc.OracleDriver");
  String url="jdbc:oracle:thin:@ip:port:sid";
  String user="";
  String pwd="";
  Connection con=DrivaerManager.getConnection(url,user,pwd);
2.语句
  String sql="....?";
  PreparedStatement stmt =con.prepareStatement(sql);
  stmt.setString(1,值);
  
3.接收
  ResultSet rs=stmt.executeUpdate();//添加,删除,修改时用
  ResultSet rs=stmt.executeQuery();//查询时用
  while(rs.next()){
   int id=rs.getInt("id");
  }
4.关闭
  rs.close();
  stmt.close();
  con.close();
-------------------------------------------------------------------------------


2.封装DBUtils,BaseDAO,DAO

(DBUtils类,BaseDAO类,实体类(implement Serializable),DAO类(extends BaseDAO,增删改查))


//
DBUtils类
----------
public class DBUtils{
  private static String dirverClass="";
  private static String url="";
  private static String userName="";
  private static String passWord="";
  
  static{
   Class.forName(dirverClass);
  }
  public static Connection getConnection(){
   return DriverManager.getConnection(url, user, pwd);
  }

}
//
properties文件存放连接数据库的数据
----------
XXXX.properties(扩展名) 存放键值对组成的文件
文件内容:
{
dirverClass = oracle.jdbc.OracleDriver
url = jdbc:oracle:thin:@172.16.9.99:1521:boson1
username = jsd1302
password = jsd1302
}
读取文件:
{
Properties props=new Properties();
InputStream is= DBUtils.class.getClassLoader().getResourceAsStream("com/tarena/tts/dao/db.properties");
props.load(is);
//getPropery()方法根据key获取value
System.out.println(props.getProperty("dirverClass"));
}
//
BaseDAO类
----------
public class BaseDAO{
 protected Connection getConnection(){
  return DBUtils.getConection();
 }
}
-------------------------------------------------------------------------------


3.DAO中增删改查方法中的事务控制


//
//开启事务(默认是自动提交)
con.setAutoCommit(false);
//提交事务
con.commit();
//回滚事务
con.rollback();
-------------------------------------------------------------------------------


4.批处理执行多条sql语句


//
stmt.addBath(); //添加批处理,有SQL语句stmt,(多次就保存多条)
stmt.executeBatch();//执行批处理,(技巧多少次执行一次,一定要指定范围,防止内存溢出)
-------------------------------------------------------------------------------


5.重新封装BaseDAO,优化Connection的获取


引入ThreadLocal
private static ThreadLocal<Connection> threadLocal=new ThreadLocal<Connection>();
threadLocal.get();
threadLocal.set(xxx);
//优化getConnection方法
protected Connection getConnection(){
 Connection conn=null;
 conn=threadLocal.get();
 if(conn==null){
  conn=getConn();
  threadLocal.set(conn);
 }
 return conn;
}
//优化closeConnection方法
protected void closeConnection(){
 Connection con=threadLocal.get();
 if(conn!=null){
  conn.cose();
  threadLocal.set(null);
 }
}
-------------------------------------------------------------------------------


6.分页查询


参数:当前第几页,每页显示的条数
获取分页数据:通过参数知道这一页开始的下标和结束的下标,通过rownum的sql获得
获取总页数:获取总条数,然后除以每页显示的条数就是总页数(不能被整除+1)
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------


7.MySQL数据库的操作


Class.forName(com.mysql.jdbc.Driver);
Connection的获得:
DriverManager.getConnection(jdbc:mysql://localhost:3306/数据库名?user=用户名&password=密码&useUnicode=true&characterEncoding=UTF8);
-----
mysql分页:
//第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)
mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 ,注意,10为偏移量
mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //也就是说,LIMIT n 等价于 LIMIT 0,n。

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值