朋的博客

          MySQL資料,Java技術,管理思想,博弈論,Ajax,XP極限編程,H.264,HEVC,HDR
          隨筆 - 86, 文章 - 59, 評論 - 1069, 引用 - 0
          數據加載中……

          jsp 結合 javabeans 操作 mysql 數據庫(轉!)

          本文用jsp結合javabeans實現對mysql數據庫的操作。

          首先,請確定您已經安裝以下軟件:
          1、Java 2 sdk 1.4
          2、MySql數據庫
          3、Macromedia JRun(也可以使用其它jsp服務器)
          4、Mysql Control Center(非必需)
          5、文本編輯器(作者用的是EditPlus2)

          在開始動手之前,我們要先明確先個問題:

          問題一:如何用javabeans連接數據庫

          javabeans連結mysql數據庫的核心代碼如下:

          Javabeans連結數據庫核心代碼:

          Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url ="jdbc:mysql://localhost:3306/yourDataBase?user=username&password=password&useUnicode=true&characterEncoding=gb2312"; Connection conn= DriverManager.getConnection(url); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  ResultSet rs=stmt.executeQuery("select * from test");

          其中"org.gjt.mm.mysql.Driver"是mysql的jdbc驅動。默認的是沒有的,你可以到網上下載一個,解壓后就可以使用。其中點操作符表示路徑,即org\gjt\mm\mysql\Driver.class。當然,這個包里還會有其它的class,您可以自己看一下,如果需要的話,可以直接拿來用。在url中,yourDataBase是你的數據庫的名字,username是數據庫的訪問名稱,password是密碼。后面的useUnicode=true&characterEncoding=gb2312是為了解決中文問題,這樣從MySql中獲取的即為中文字符。Rs即為執行查詢select * from test后返回的結果集。

          問題二:在jsp中如何調用javabeans

          在jsp中,我們用<jsp:useBean id="DBConnID" class="DBConn" scope="session"/>
          來調用javabeans。事實上,這相當于導入一個類DBConn,然后創建一個名為DBConnID的實例,我們可以直接用DBConnID.DBConn()調用類DBConn中的DBConn方法。這和面向對象編程中的所有其它方法都是一樣的。

          問題三:提交表單的編碼問題

          在jsp中,表單提交以后,如果我們不進行任何處理,那么寫進數據庫的會是亂碼。在這里,我們用
          String newname = new String(request.getParameter("newname").getBytes("ISO8859_1"));
          即可解決此問題。

          問題四:大段文本的換行問題

          因為html不能正常顯示大段文本的換行、回車,所以我們要在輸出到html的時候將其中的回車、換行替換成html標簽<br>。但是在java中,String類的replace方法只能替換單個字符。不過我們可以用StringBuffer類的replace方法來解決這個問題:
          myStringBuffer.replace(int start, int end , String str);

          其中start是要替換字符串的開始位置,end是要替換字符串的結束位置,str是用來替換的字符串。我們只要用字符串<br>替換原文本中的\r\n,就可以在網頁中正確地輸出了。
          明確了這四個問題以后,我們就可以開始動手了。

          一、準備MySql數據庫

          在MySql的test數據庫中新建表tbl_test,共有兩個字段id和name,其中id為int型,name為text型.
           
          表tbl_test建好以后,在其中隨便加入幾條數據,以備測試用。 

          二、編寫連接數據庫的javabeans

          用文本編輯器編寫如下代碼,將其保存為c:\j2sdk1.4.0\bin\DBConn.java。
          DBConn.java

          //======================================
          //include java class
          //======================================
          import java.sql.*;

          //==========================================
          // Define Class DBConn
          //==========================================
          public class DBConn
          {
          public String sql_driver = "org.gjt.mm.mysql.Driver";
          public String sql_url = "jdbc:mysql://localhost:3306";
          public String sql_DBName = "test";
          public String user = "sa";
          public String pwd = "";

          Connection conn = null;
          Statement stmt = null;
          ResultSet rs = null;

          public boolean DBConn()
          {
          try{
          Class.forName(sql_driver).newInstance();
          this.conn = DriverManager.getConnection(sql_url + "/" + sql_DBName + "?user=" + user + "&password=" + pwd + "&useUnicode=true&characterEncoding=gb2312");
          this.stmt = this.conn.createStatement();
          return true;
          }catch(Exception e){
          System.out.println(e.toString());
          return false;
          }
          }

          public ResultSet executeQuery(String strSql)
          {
          try{
          this.rs = stmt.executeQuery(strSql);
          return this.rs;
          }catch(SQLException e){
          System.out.println(e.toString());
          return null;
          }catch(NullPointerException e){
          System.out.println(e.toString());
          return null;
          }
          }

          public boolean execute(String strSql)
          {
          try{
          if(this.stmt.executeUpdate(strSql) == 0)
          return false;
          else
          return true;
          }catch(SQLException e){
          System.out.println(e.toString());
          return false;
          }catch(NullPointerException e){
          System.out.println(e.toString());
          return false;
          }
          }

          public boolean hasData()
          {
          try{
          boolean has_Data = this.rs.first();
          this.rs.beforeFirst();
          return has_Data;
          }catch(SQLException e){
          System.out.println(e.toString());
          return false;
          }
          }

          public boolean rs_absolute(int row)
          {
          try{
          this.rs.absolute(row);
          return true;
          }catch(SQLException e){
          System.out.println(e.toString());
          return false;
          }
          }

          public void rs_afterLast()
          {
          try{
          this.rs.afterLast();
          }catch(SQLException e){
          System.out.println(e.toString());
          }
          }

          public void rs_beforeFirst()
          {
          try{
          this.rs.beforeFirst();
          }catch(SQLException e){
          System.out.print(e.toString());
          }
          }

          public boolean rs_first()
          {
          try{
          this.rs.first();
          return true;
          }catch(SQLException e){
          System.out.print(e.toString());
          return false;
          }
          }

          public boolean rs_next()
          {
          try{
          return this.rs.next();
          }catch(SQLException e){
          System.out.println(e.toString());
          return false;
          }
          }

          public boolean rs_last()
          {
          try{
          return this.rs.last();
          }catch(SQLException e){
          System.out.println(e.toString());
          return false;
          }
          }

          public boolean rs_previous()
          {
          try{
          return this.rs.previous();
          }catch(Exception e){
          System.out.println(e.toString());
          return false;
          }
          }


          public void rs_deleteRow()
          {
          try{
          this.rs.deleteRow();
          }catch(SQLException e){
          System.out.print(e.toString());
          }
          }

          public String rs_getString(String column)
          {
          try{
          return this.rs.getString(column);
          }catch(SQLException e){
          System.out.println(e.toString());
          return null;
          }
          }
                public String rs_getHtmlString(String column)
          {
          try{
          String str1 = this.rs.getString(column);
          String str2 = "\r\n";
          String str3 = "
          ";
          return this.replaceAll(str1,str2,str3);
          }catch(SQLException e){
          System.out.println(e.toString());
          return null;
          }
          }
          private static String replaceAll(String str1,String str2,String str3)
          {
          StringBuffer strBuf = new StringBuffer(str1);
          int index=0;
          while(str1.indexOf(str2,index)!=-1)
          {
          index=str1.indexOf(str2,index);
          strBuf.replace(str1.indexOf(str2,index),str1.indexOf(str2,index)+str2.length(),str3);
          index=index+str3.length();

          str1=strBuf.toString();
          }
          return strBuf.toString();
          }

          public int rs_getInt(String column)
          {
          try{
          return this.rs.getInt(column);
          }catch(SQLException e){
          System.out.println(e.toString());
          return -1;
          }
          }

          public void rs_close()
          {
          try{
          this.rs.close();
          }catch(SQLException e){
          System.out.print(e.toString());
          }
          }

          public static void main(String args[])
          {
          try{
          DBConn myconn = new DBConn();
          myconn.setDBName("test");
          myconn.DBConn();
          //myconn.execute("Insert Into tbl_test(id,name) values('10','shandaer')");
          //myconn.execute("Update tbl_test set name='yyyyyyyyyyyy' where id=10");
          //myconn.execute("Delete from tbl_test where id=1");
          myconn.executeQuery("select * from tbl_test");
          while (myconn.rs.next())
          {
          System.out.println(myconn.rs_getString("id") + myconn.rs_getString("name"));
          System.out.println('\n' + myconn.rs_getHtmlString("name"));
          System.out.println(myconn.rs.getString("name") + myconn.rs_getInt(1));
          }
          }catch(Exception e){
          System.err.println(e.toString());
          }}}


          在Windows2000下,打開cmd窗口,轉至c:\j2sdk1.4.0\bin目錄下,鍵入命令:javac DBConn.java,如沒有拋出任何例外,則編譯成功。
          如有例外拋出,請仔細檢查程序代碼。如果說找不到mysql的驅動,請將mysql的jdbc驅動org包放至bin目錄下,那樣就可以連接數據庫了。
          編譯完成后,鍵入命令:java DBConn,如果有數據庫中的數據被輸出,說明javabeans已經編寫成功。














          三、建立sqlmanage服務器

          在JRun Administrator中,新建sqlmanage服務器。在根目錄下分別新建文件index.jsp、add.jsp、del.jsp、edit.jsp、editpost.jsp,
          同時將編譯好的DBConn.class文件拷至sqlmanage\WEB-INF\classes\目錄下。另外,我們需要到網上下載一個MySql的jdbc驅動,解壓縮后將
          org文件夾整個拷至DBConn.class所在目錄下。

          posted on 2005-07-13 00:01 benchensz 閱讀(952) 評論(1)  編輯  收藏 所屬分類: Java技術

          評論

          # re: jsp 結合 javabeans 操作 mysql 數據庫(轉!)  回復  更多評論   

          垃圾文章
          不就一破動態連接么
          連連接池都不用
          看來作者的確太雞八弱智
          居然這種人也來寫java如何如何
          也不掂量一下自己有多少分量
          2006-04-05 16:26 | ganger
          主站蜘蛛池模板: 疏附县| 西乡县| 玉屏| 项城市| 民乐县| 水城县| 柳江县| 鄂托克前旗| 八宿县| 襄汾县| 绥德县| 宜黄县| 平阴县| 象山县| 卓资县| 肇州县| 遵化市| 九龙坡区| 社旗县| 桓台县| 尉犁县| 新宁县| 信丰县| 岐山县| 龙泉市| 香格里拉县| 海宁市| 万山特区| 宁乡县| 沙雅县| 丰县| 湘潭市| 两当县| 裕民县| 高碑店市| 万载县| 新泰市| 临朐县| 紫金县| 和平县| 周宁县|