點(diǎn)滴

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            7 Posts :: 0 Stories :: 1 Comments :: 0 Trackbacks
          Java中對(duì)數(shù)據(jù)庫(kù)的操作一般分為三個(gè)步驟
          一,加載驅(qū)動(dòng)程序
          Class.forName("org.postgresql.Driver");
          二,打開連接
          String url="jdbc:postgresql:COREJAVA";
          String username="dbuser";
          String password="secret";
          Connection conn=DriverManager.getConnection(url,username,password);
          前面兩個(gè)步驟非常的簡(jiǎn)單,對(duì)于任意的數(shù)據(jù)庫(kù)來(lái)講都是這些內(nèi)容,而說(shuō)道比較多的就是第三步了
          三,對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作
              顯而易見對(duì)數(shù)據(jù)庫(kù)的操作就是執(zhí)行SQL命令,首先需要?jiǎng)?chuàng)建一個(gè)Statement對(duì)象。要?jiǎng)?chuàng)建statement對(duì)象,需要使用調(diào)用DriverManager.getConnection方法所獲得的Connection對(duì)象。
              Statement stmt=conn.createStatatement();
              String command="UPDATE Books SET Price=Price-5.00 WHERE Title NOT LIKE '%Introduction%'";
          然后調(diào)用Statement類中的executeUpdate方法:  stmt.executeUpdate(command);
              executeUpdate方法將返回受SQL命令影響的行數(shù)。列入,在先前的例子中調(diào)用本方法將返回那些降價(jià)5美元的圖書的總數(shù).
              executeUpdate方法既可以執(zhí)行諸如INSERT,UPDATE和DELETE之類的操作,也可以執(zhí)行諸如CREATE TABLE和DROP TABLE之類的數(shù)據(jù)命令。
          但是,執(zhí)行SELECT查詢時(shí)必須使用executeQuery方法。另外還有一個(gè)execute方法可以執(zhí)行任意的SQL語(yǔ)句。此方法通常只用于用戶提供的交互式查詢。 
              當(dāng)我們執(zhí)行查詢操作時(shí),通常最感興趣的是查詢結(jié)果。executeQuery方法返回一個(gè)ResultSet對(duì)象,可以通過(guò)它來(lái)每次移行地迭代遍歷所有查詢結(jié)果。    ResultSet rs=stmt.executeQuery("SELECT * FROM Books");
             
              另外當(dāng)你看這點(diǎn)的時(shí)候,我可以告訴你SQL的數(shù)據(jù)類型和Java的數(shù)據(jù)類型并非完全一致,我不是很想完全列出所有的對(duì)照表,因?yàn)槿我獾臅厦婵隙ǘ加邢嚓P(guān)的介紹。只是下面的這幾種你最好還是記住,因?yàn)榉浅S锌赡芫驮谀愕某绦蛑袝?huì)出現(xiàn)錯(cuò)誤,左邊為SQL右邊為Java數(shù)據(jù)類型
          Interger或INT                                int
          NUMERIC(m,n),DECIMAL(m,n)或DEC(m,n)          java.math.BigDecimal
          FLOAT(n)                                     double
          REAL                                         float
          DOUBLE                                       double         
              下面介紹一下java.sql.Statement的常用方法,我覺得這個(gè)挺重要的
          int  executeUpdate(String sql)
              執(zhí)行字符串中指定的INSERT,UPDATE,DELETE等SQL語(yǔ)句。還可以執(zhí)行數(shù)據(jù)定義語(yǔ)言(DLL)的語(yǔ)句,如CREATE TABLE.返回受影響的記錄總數(shù),如果是沒有更新計(jì)數(shù)的語(yǔ)句,則返回-1.本著對(duì)大家和自己負(fù)責(zé)的任務(wù)我徹底用了這個(gè)函數(shù),在執(zhí)行INSERT,UPDATE,DELETE的操作的事后返回的的確是影響的函數(shù),一般你執(zhí)行一條INSERT語(yǔ)句的事后返回的肯定是1,此外當(dāng)你執(zhí)行CREATE TABLE操作的時(shí)候返回的是0.至于等于-1的情況我還沒有遇到,等遇到的時(shí)候第一時(shí)間更新此文章。
           
          boolean execute(String sqlStatement)
              執(zhí)行字符串中指定的SQL語(yǔ)句。如果該語(yǔ)句返回一個(gè)結(jié)果集則該方法返回true;反之,返回false。使用getResultSet或getUpdateCount方法可以得到語(yǔ)句的執(zhí)行結(jié)果。 

          int getUpdateCount()
              返回受前一條更新語(yǔ)句影響的記錄總數(shù)。如果前一條語(yǔ)句未更新數(shù)據(jù)庫(kù),則返回-1.對(duì)于每一條執(zhí)行過(guò)的語(yǔ)句,該方法只能被調(diào)用一次。
          ResultSet  getResultSet()
              返回前一條查詢語(yǔ)句的結(jié)果集。如果前一條語(yǔ)句未產(chǎn)生結(jié)果集,則返回null值。對(duì)于每一條執(zhí)行過(guò)的語(yǔ)句,該方法只能被調(diào)用一次。

          接著簡(jiǎn)單的介紹一下PreparedStatement的用法吧,就不描述了僅給出代碼,大家肯定都會(huì)明白的
             string  sql = "select * from people p where p.id = ? and p.name = ?";
             PreparedStatement pStmt=conn.prepareStatement(sql);
             pStmt.setint(1,id);
             pStmt.setstring(2,name);
             resultset rs = pStmt.executequery();
          ==========================================================================================
             pStmt = con.prepareStatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)");
             pStmt.setString(1,var1);
             pStmt.setString(2,var2);
             pStmt.setString(3,var3);
             pStmt.setString(4,var4);
             pStmt.executeUpdate();



          posted on 2007-09-14 16:06 developer 閱讀(383) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 东丽区| 两当县| 合川市| 伊吾县| 仁布县| 铅山县| 云林县| 清河县| 南平市| 柘荣县| 赫章县| 丁青县| 大埔区| 嘉义县| 贡嘎县| 方城县| 将乐县| 永安市| 峨山| 红桥区| 陆良县| 胶州市| 新巴尔虎左旗| 临安市| 依安县| 富源县| 绩溪县| 陇川县| 崇义县| 元阳县| 多伦县| 惠来县| 温泉县| 大连市| 兴义市| 晋宁县| 雷山县| 昂仁县| 黄平县| 邵阳县| 虞城县|