<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    朋的博客

    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 閱讀(948) 評論(1)  編輯  收藏 所屬分類: Java技術

    評論

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

    垃圾文章
    不就一破動態連接么
    連連接池都不用
    看來作者的確太雞八弱智
    居然這種人也來寫java如何如何
    也不掂量一下自己有多少分量
    2006-04-05 16:26 | ganger
    主站蜘蛛池模板: 亚洲AV日韩AV天堂久久 | 国产桃色在线成免费视频| 一区二区三区四区免费视频| 99在线视频免费观看视频| 欧洲精品成人免费视频在线观看| 黄瓜视频影院在线观看免费| 亚洲国产一成久久精品国产成人综合| 亚洲国产精品不卡毛片a在线| 亚洲人午夜射精精品日韩| 亚洲精品亚洲人成人网| 亚洲 暴爽 AV人人爽日日碰| 亚洲av综合av一区二区三区| 免费观看一区二区三区| 美丽姑娘免费观看在线观看中文版| 18禁成年无码免费网站无遮挡| 亚洲熟妇无码另类久久久| 久久亚洲精品无码aⅴ大香| 深夜福利在线免费观看| 97性无码区免费| 亚洲狠狠婷婷综合久久久久| 亚洲精品国产av成拍色拍| 污污网站免费观看| 亚洲精品99久久久久中文字幕| 亚洲一级在线观看| 国产午夜精品久久久久免费视| 最近高清中文字幕免费| 最近中文字幕无吗免费高清| 亚洲AV无码国产精品麻豆天美 | 亚洲AV无码成人精品区狼人影院| 日韩免费高清大片在线| 亚洲一区二区精品视频| 亚洲入口无毒网址你懂的| 在线播放亚洲精品| av无码久久久久不卡免费网站 | 亚洲午夜久久久久久久久电影网| 亚洲av无码一区二区三区观看| 中文字幕一区二区免费| 久99久无码精品视频免费播放| 四虎永久在线精品免费网址| 亚洲av无码一区二区三区网站| 亚洲AⅤ男人的天堂在线观看 |