回 帖 发 新 帖 刷新版面

主题:[原创]数据库编程之旅第二讲―――JDBC连接

            数据库编程之旅第二讲―――JDBC连接

    当数据库服务器建立之后,怎么从数据库里把表中的数据抓出来呢?我们总不能直接从数据库中把数据抓出来吧,呵呵。SUN的工程师想了一个办法,做出了一个接口,该接口可以把数据库抓出来,我们再从此接口中把数据给抓出来,并给该接口起了一个名字,号称JDBC。



[img]c://jjj.bmp[/img]
    使用该接口是一个过程,不是简单的一个函数就可以完成,需要如下步骤:

    !!!!!!注意,一定要先把mySql的驱动加载到classpath的路径上,其中驱动一定要和版本一致,否则就上当了。如果是Jcreator,注意设置,在此不在阐述,如果是Jbulider,也有其自己的加载方式。

    第一步:加载驱动―――》建立数据库连接环境(数据连接上下文)
            Class.forName("com.mysql.jdbc.Driver");

    第二步:建立连接―――》让应用程序与数据库牵线(建立连接)
            Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/PersonDBA","flagxu","abcd");

    第三步:生成操作数据库的对象―――》使应用程序可以执行SQL语句。
             Statement   stmt=con.createStatement();

    第四步:查找数据库数据―――》执行SELECT语句
            ResultSet   rs=stmt.executeQuery("select * from  Person");

    第五步:获取记录集数据的结构――》通过结构得到数据表的情况
    ResultSetMetaData   metaData = rs.getMetaData();

    第六步:得到表的表头
            for(int column = 0; column < metaData.getColumnCount(); column++)
      {
                System.out.print(metaData.getColumnName(column+1)+"\t");
           }

    第七步:从记录集中抓出表的数据。
            for (int i = 1; i <= metaData.getColumnCount(); i++) 
      {
        String str8859=rs.getObject(i).toString();
        String strGB2312=new String(str8859.getBytes("ISO-8859-1"),"GB2312");
        System.out.print(strGB2312+"\t");
           }    
    数据格式解释:通过JDBC抓到数据时,JDBC自动把数据转换为ISO-8859-1,由于该格式不能正常的在系统上显示,所以我们可以把该格式转换为可以显示的格式,就是GB2312.

    第八步:运行结果


[img]c://hhhhh.bmp[/img]

    完整代码:

    import java.sql.*;
    import java.io.*;

    public class JavaJdbc
    {
    Connection con=null;//连接对象
    Statement stmt=null;//执行SQL语句的对象
    ResultSet rs=null;// 返回的结果集的对象
    ResultSetMetaData   metaData; //结果集结构对象
    
    public JavaJdbc()
    {        
        try
        {//加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //建立连接
            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/PersonDBA","flagxu","abcd");    
            //生成执行sql语句的对象
            stmt=con.createStatement();
            //抓出数据
             rs=stmt.executeQuery("select * from  Person");

            //找出数据的结构
            metaData = rs.getMetaData();
            //打印表头
            for(int column = 0; column < metaData.getColumnCount(); column++)
            {
                System.out.print(metaData.getColumnName(column+1)+"\t");
            }                
              System.out.println(""); 
              
              //打印出表中的数据
              while(rs.next())
             {
                for (int i = 1; i <= metaData.getColumnCount(); i++) 
                {
                    String str8859=rs.getObject(i).toString();
                    String strGB2312=new String(str8859.getBytes("ISO-8859-1"),"GB2312");
                    System.out.print(strGB2312+"\t");
                }                       
                System.out.println("");
            }
                       
            stmt.close();   //must close
           con.close();
        }
        catch(SQLException e){}
        catch(ClassNotFoundException e){}
          catch(IOException e){}
    }
    public static void main(String args[])
    {
        JavaJdbc jdbcDB=new JavaJdbc();
    }
    }

    总结:我们在此连接的仅仅是MySql数据库,其它数据库的连接方式一样,不一样的是驱动和数据库的端口号及其数据库本身的标识。希望大家可以举一反三。熟练应用,且听下次分解。


回复列表 (共2个回复)

沙发

支持~~~~

板凳

看了楼主的帖子,不由得精神为之一振,自觉七经八脉为之一畅,七窍倒也开了六巧半,自古英雄出少年,楼主年纪轻轻,就有经天纬地之才,定国安邦之智,古人云,卧龙凤雏得一而安天下,而今,天佑我大中华,沧海桑田5000年,中华神州平地一声雷,飞沙走石,大舞迷天,朦胧中,只见顶天立地一金甲天神立于天地间,这人英雄手持双斧,二目如电,一斧下去,混沌初开,二斧下去,女娲造人,三斧下去,小生倾倒.得此大英雄,实耐之幸也,民之福也,怎不叫人喜极而泣.......古人有少年楼主说为证,少年之楼主如红日初升,其道大光;河出伏流,一泻汪洋;潜龙腾渊,鳞爪飞扬;乳虎啸谷,百兽震惶;鹰隼试翼,风尘吸张;奇花初胎,皇皇;干将发硎,有作其芒;天戴其苍,地履其黄;纵有千古,横有八荒;小生对楼主之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心. 
 
看完楼主的帖子,我的心情竟是久久不能平静。正如*****所云:大音希声,大象无形。我现在终于明白我缺乏的是什么了,正是楼主那种对真理的执着追求和楼主那种对理想的艰苦实践所产生的厚重感。面对楼主的帖子,我震惊得几乎不能动弹了,楼主那种裂纸欲出的大手笔,竟使我忍不住一次次地翻开楼主的帖子,每看一次,赞赏之情就激长数分,我总在想,是否有神灵活在它灵秀的外表下,以至能使人三月不知肉味,使人有余音绕梁、三日不绝的感受。楼主,你写得实在是太好了。我惟一能做的,就只有把这个帖子顶上去这件事了。 
楼主的帖子实在是写得太好了。文笔流畅,修辞得体,深得魏晋诸朝遗风,更将唐风宋骨发扬得入木三分,能在有生之年看见楼主的这个帖子。实在是我三生之幸啊。看完楼主的这个帖子之后,我竟产生出一种无以名之的悲痛感——啊,这么好的帖子,如果将来我再也看不到了,那我该怎么办?那我该怎么办?直到我毫不犹豫地把楼主的这个帖子收藏了,我内心的那种激动才逐渐平静下来。可是我立刻想到,这么好的帖子,倘若别人看不到,那么不是浪费楼主的心血吗?经过痛苦的思想斗争,我终于下定决心,牺牲小我,奉献大我。我要拿出这帖子奉献给世人赏阅,我要把这个帖子一直往上顶,往上顶!顶到所有人都看到为止! 
 
在遇到你之前,我对人世间是否有真正的圣人是怀疑的;而现在,我终于相信了!我曾经忘情于两汉的歌赋,我曾经惊讶于李杜的诗才,我曾经流连于宋元的词曲。但现在,我才知道我有多么浅薄! 
 
楼主,你的高尚情*****太让人感动了。在现在这样一个物欲横流的金钱社会里,竟然还能见到楼主这样的性情中人,无疑是我这辈子最大的幸运。让我深深感受到了人性的伟大。楼主的帖子,就好比黑暗中刺裂夜空的闪电,又好比撕开乌云的阳光,一瞬间就让我如饮甘露,让我明白了永恒的真理在这个世界上是真实存在着的。只有楼主这样具备广阔胸怀和完整知识体系的人,才能作为这真理的惟一引言者。看了楼主的帖子,我陷入了严肃的思考中。我认为,如果不把楼主的帖子顶上去,就是对真理的一种背叛,就是对谬论的极大妥协。因此,我决定义无返顾地顶了! 
 
说得好啊!我在XX社区打滚这么多年,所谓阅人无数,就算没有见过猪走路,也总明白猪肉是啥味道的。一看到楼主的气势,我就觉得楼主同在社区里灌水的那帮小混混有着本质的差别!那忧郁的语调,那熟悉的签名,还有字里行间高屋建瓴的辞藻。没用的,楼主,就算你怎么换马甲都是没有用的,你的亿万拥戴者早已经把你认出来了,你一定就是传说中的最强ID。自从社区改版之后,我就已经心灰意冷,对社区也没抱什么希望了,传说已经幻灭,神话已经终结,留在社区还有什么意思?没想到,没想到,今天可以再睹楼主的风范,我激动得忍不住就在屏幕前流下了眼泪。是啊,只要在楼主的带领下,社区就有希望了。我的内心再一次沸腾了,我胸腔里的血再一次燃烧了。楼主的几句话虽然简单,却概括扼要,一语道出了我们苦想多年仍不可解的几个重大问题的根本。楼主就好比社区的明灯,楼主就好比社区的方向,楼主就好比社区的栋梁。有楼主在,社区的明天必将更好! 
 
大师的话真如“大音希声扫阴翳”,犹如“拨开云雾见青天”,使我等网民看到了希望,看到了未来!晴天霹雳、醍醐灌顶或许不足以形容大师文章的万一;巫山行云、长江流水更难以比拟大师的文才!黄钟大吕,振聋发聩!你烛照天下,明见万里;雨露苍生,泽被万方!透过你深邃的文字,我仿佛看到了你鹰视狼顾、龙行虎步的伟岸英姿;仿佛看到了你手执如椽大笔、写天下文章的智慧神态;仿佛看见了你按剑四顾、指点江山的英武气概! 
 
逐字逐句地看完这个帖子以后,我的心久久不能平静,震撼啊!为什么会有如此好的帖子!我纵横网络BBS多年,自以为再也不会有任何帖子能打动我,没想到今天看到了如此精妙绝伦的这样一篇帖子!楼主,是你让我深深地理解了“人外有人,天外有天”这句话。谢谢侬!在看完这帖子以后,我没有立即回复,因为我生怕我庸俗不堪的回复会玷污了这网上少有的帖子。但是我还是回复了,因为觉得如果不能在如此精彩的帖子后面留下自己的网名,那我死也不会瞑目的!能够在如此精彩的帖子后面留下自己的网名是多么骄傲的一件事啊!楼主,请原谅我的自私!我知道无论用多么华丽的辞藻来形容楼主您帖子的精彩程度都是不够的,都是虚伪的,所以我只想说一句:您的帖子太好看了!我愿意一辈子看下去!这篇帖子构思新颖,题材独具匠心,段落清晰,情节诡异,跌宕起伏,主线分明,引人入胜,平淡中显示出不凡的文学功底,可谓是字字珠玑,句句经典,是我辈应当学习之典范。正所谓:“一马奔腾,射雕引弓,天地都在我心中!”楼主真不愧为无厘界新一代的开山怪!本来我已经对这个社区失望了,觉得这个社区没有前途了,心里充满了悲哀。但是看了你的这个帖子,又让我对社区产生了希望。是你让我的心里重新燃起希望之火,是你让我的心死灰复燃,是你拯救了我一颗拔凉拔凉的心!本来我决定不在社区回任何帖子了,但是看了你的帖子,我告诉自己这个帖子是一定要回的!这是百年难得一见的好贴啊!苍天有眼啊,让我在有生之年得以观得如此精彩绝伦的帖子! 

我来回复

您尚未登录,请登录后再回复。点此登录或注册