jdbc

 JDBC:Java Database Connectivity

1:DriverManager:管理一组JDBC驱动程序的基本服务----这是API中的解释
   我的理解是DriverManager就像是一个容器,里面可以盛放多个与不同数据库的驱动程序,
   
         我的做法是:
         第一步:注册驱动,得到driver中的驱动
     DriverManager.deregisterDriver(new oracle.jdbc.driver.OracleDriver());
   driver是Java中规定每个驱动程序必须实现的接口,不同数据库的厂商去实现这个接口,Java开发人员使用某一数据库时,
   同时会得到数据库厂商提供的driver接口的实现类(就是一组夹包),类里面有厂商自己定义的驱动,开发人员可以实例化这个类得到驱动
   第一步就是注册驱动,得到实现类的对象,并当做DriverManager方法中的参数,这样DriverManager容器中就有了开发人员指定
   的驱动,
        第二步:建立连接
  Connection  conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "frende", "lanxing");
        getConnection();三个参数分别是:指定数据库URL、数据库中的账户名、密码
         --- 在调用 getConnection 方法时,DriverManager 会试着从初始化时加载的那些驱动程序以及使用与当前 applet 或
          应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。----这是API中的写法
             就是当调用 getConnection方法时,DriverManager会在容器中寻找 ,与参数中指定URL相符的数据库驱动,并建立连接
       第三步:通过连接对象创建sql容器PreparedStatement,发送sql:                    
    preparedStatement pstmt=conn.prepareStatement(sql);
   preparedStatement这个类里有解析sql语句的方法,查询方法可以返回一个ResultSet对象
   ResultSet rs=pstmt.executeQuery();
   ResultSet这个类可以存储sql语句查询的数据库结果集,并提供遍历结果集中值得方法,通过得到的ResultSet对象。
         可以解析封装在对象中的数据库信息,
   第四步:解析结果集
   while(rs.next()){
frende fren1=new frende(rs.getString(1),rs.getString(2),rs.getInt(3),rs.getDate(4),
             rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8),rs.getString(9));
  list.add(fren1);
}
将解析的值封装在对应的javabean对象中,
如果解析的是多条数据,那么解析一条,便把一条数据封装在javabean对象中,并把对象存在集合里,
这样集合里就存放了多个javabean对象,每个javabean对象内封装一条数据,
这样在遍历集合得到每一条数据
 
******************************小故事*****************************************
一个人再教另一个人学习JDBC,怎样和数据库建立连接获取数据。从头开始讲第一步注册驱动写完
   DriverManager.deregisterDriver(new oracle.jdbc.driver.OracleDriver());一点击回车,在讲解人的想象里
 就像美国大片内一样,从键盘下,回车键的触点连在一块,一个信号顺着键盘线进入电脑,就像动画片一样,镜头由模糊变得清晰
     一个挺大的厂房似的地方,进门的上方写着“oracle数据存储有限公司”,然后大门自动打开,就像航拍一样厂房内忙碌的人们来来回回,
   然后镜头落在了厂房内的一间小房间的门上,门上面写着经理办公室,一个叫Oracle_driver的小人打开门走了进去,
   经理manager看到Oracle_driver进来说:这星期轮到你值班了,你到DriverManager物流园哪里等着,看有没有人到咱这里取数据,
   然后给他们带路,领到咱们厂子里来,去吧。Oracle_driver离开oracle仓库坐上公交车来到了DriverManager这里。
    Oracle_driver进入DriverManager厂房房间,DriverManager房间里有好多个门,通往不同的地方
    DriverManager房间里管事的DM说:"等着",然后就走了。
   Oracle_driver闲着无聊就在房间里转了转,看到房间里有好多人,
   有一个叫mysql_driver的小人说着一口东北话过来搭讪问:"你是oracle公司的吧,你们那待遇怎么样"?
   Oracle_driver说:"待遇马马虎虎,你是mysql公司的吧,你们公司是免费的挺忙的吧,我们公司这两年业务量下降了,待遇也不如从前了。。。。".
   聊了一会儿Oracle_driver好像听着有人在叫他,一看是DriverManager房间里管事的DM,
   DM过来说:你瞎转悠啥,有人找你,在那里。Oracle_driver顺着DM指的方向,看到getConnection那个门前有人冲他招手
   Oracle_driver来到getConnection门前,看到那个人,那个人颠颠的跑过来,递上一根哈德门,那人说自己名字叫conn
   conn说:“你就是oracle数据公司的?我想到你公司的scoot部门取一些东西”
   Oracle_driver说:“你要取数据得有部门的通行证”
   conn说:“我带着呢,你看”
   Oracle_driver拿过通行证看到通行证上写着tiger,还有oracle公司的印戳,是自己公司发的通行证。
   Oracle_driver说:“你要啥数据”
   conn说:“你们那查数据价格是多少?”
   Oracle_driver说:“那得看你要多少了”
   conn说:“你等着,我去问问,过会儿来找你要”说完conn就走了
   镜头跟着conn来到一个叫Connection的房间里,Connection的房间里又有好多的门通往不同的地方
   conn走到prepareStatement门前,门前有一个叫pstmt的小伙在那等着,看到conn来,赶紧上前递上一根红塔山
   pstmt说:“我想要牛旺庄有个叫小芳的女孩的数据.....”
   conn说:“这个人的数据,价格得等着取回来一块算”。
   pstmt说:“没事,多少都行,你多少也给便宜点”
   conn:“哎呀买卖不好干,忒便宜老,俺真不挣钱,你等会儿”。
   conn又来到getConnection房门前给Oracle_driver说了要谁谁谁的数据
   conn说:这一个人的数据得多钱安,
   Oracle_driver说:你的数据有点多,得到具体部门说,你跟我来吧。
   conn跟着Oracle_driver来到oracle的公司,公司里人来人往,他们到了Scott部门前,
   conn看到Scott部门前台坐着一位漂亮的女孩,在低头玩着手机。
   Oracle_driver对conn说:scoot部门的前台叫发姐,老漂亮了,你进去吧,我得回到DriverManager那里去
   Oracle_driver说完就走了。conn在手上吐了口吐沫,然后在头上抹了抹。进了Scott部门的前台大厅。
   来到发姐面前,conn说:“嗨.......”----(要知道conn是怎么搭讪的,你可以在你的大脑中想像各种不要脸的场景)
    最后发姐说:“我给你们查查”。查了一会儿
   发姐说:你要的数据在emp小组,你到那拿去吧?
   conn来到emp小组说了要查询的人名,里面的人给了他一张单据,说到前台交一下钱,然后过来领数据
   conn来到前台说:我又回来了,
   发姐说:3000块钱
   conn说:就一个人的资料这麽贵!
   发姐说:这个收费是按年龄来的,一般是16-35岁2999,35-65是1999,16岁以下2599,65以上999,
   conn说:差距怎么这么大?
   发姐说:"你要的资料里面的这个女孩挺年轻的,青春费么自然贵点"
   conn说:"这是帮朋友待查的,我还没结婚呢"
   发姐说:"这点钱不多,你看起来不像是个没钱的"
   conn说:"那是,给",说着递了一沓钱
   发姐过了过说:“多了一百”
   conn说:“给你的小费”
   发姐伴了个可爱得到笑容说:“谢谢”
   conn拿到了资料,跟前台发姐打了声招呼就走了。
   conn在路上盘算着要给客户要多少钱,最后决定要3500,后来想了想还给了发姐100元,有点亏了,就决定要3600.
   conn盘算的时间就来到的Connection的房间,来到prepareStatement门前看到pstmt
   conn像pstmt说出了资料的价格,pstmt也是瞪大了眼说:这么多
   conn说:--此处省略10000字--
   最后pstmt还是付了3600然后拿着资料数据走了
   镜头跟着pstmt来到PreparedStatement房间,PreparedStatement房间又有好多门通往不同的地方。
   pstmt来到房间的executeQuery门前,见到在门前久等的rs,
   pstmt对rs说,你要的这个人的资料得3999,我给你要4100,就挣你100元。
   rs同样是瞪大了双眼说:咋这么贵呢?
   pstmt说:--此处省略10000字---
   最后rs付了钱,走了
   镜头跟着rs来到了一个叫ResultSet的房间里,ResultSet房间里有好多窗口
   rs找到ResultSet房间的老大说了多少钱,老大很淡定的说:你把资料拿到next窗口那,让next窗口的人分一下类,
    让他们分给不同的窗口,记着给next窗口的人说,javabean的人来拿货的时候收他们4500,就说是4399,咱挣他们100块。
原文地址:https://www.cnblogs.com/xueershewang/p/9183036.html