struts操作數據庫 -一個簡單的例子

數據庫編程的一些基本步驟:

註冊驅動

創建數據庫連接

執行SQL語句獲得結果

要用到的一些基本類

Connection類

Statement類和PeparedStatement類

ResultSet類

要注意的問題

數據庫操作的時候會出現異常,要注意捕獲並處理

用以下的代碼做解釋
//定義數據庫的驅動程序(以下給出的是連接odbc數據庫的)

String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";
//定義數據的URL(名稱)

String strConnection="jdbc:odbc:myFirstData";
//數據訪問的用戶名
String strConnectUsername="";
//數據庫訪問的密碼
String strConnectPassword="";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql_temp = "select * from tableName"
try {

      Class.forName(strDriver);//註冊驅動
}
catch(ClassNotFoundException ex1) {
    ex1.printStackTrace();//捕獲驅動註冊過程中的異常
}
try {
      //獲得數據庫連接
       conn = DriverManager.getConnection(strConnection,                                                                             strConnectUsername,                                                                                strConnectPassword);
stmt = conn.CreateStatement();//創建Statement的對象stmt
rs = stmt.executeQuery(sql_temp);//利用stmt執行SQL操作返回結果集交給rs
}
catch(SQLException ex2) {
       ex2.printStackTrace();
}

來一個例子說明一下如何?
功能描述
寫一個用戶登陸的程序,用戶輸入密碼,點擊“登陸”按鈕,在用戶數據表中查找,如果有對應的記錄,就告訴:你好,歡迎你!如果沒有該用戶,就提示:用戶名或者密碼錯誤,請重新登陸。
哇,終於到了編寫有點人摸狗樣程序的時候了,以前寫的哪能叫程序啊,簡直是拿三結構的名字來欺騙人嘛。。。

建立數據庫:爲了簡單就用access建一個吧,數據庫的名字就user吧,在odbc中設置一下吧。什麼,不知道怎麼設置?哦,我現在真的沒心情跟你解釋。請你解決了這個問題再往下看吧。

建立一個數據表:userTable

用戶號碼             UserNo            文本

用戶密碼             PassWord          文本

所在的部門號碼       DepartNo          文本

填入幾個值吧

111    111      001

222    222      002

333    333      003

登陸的jsp(恐怕以後我不會再告訴你怎麼寫這樣的jsp了)

login.jsp

<%@ page contentType="text/html; charset=gb2312" %>

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<html:html>
<title>Login</title>
<center>
 <pre>
 <html:form action="execute.do" method="post">
 <h3> 請輸入 </h3>
 用戶名:   <html:text property="userID" size="12"/>
 密  碼:   <html:text property="passWord" size="12"/>
<html:submit value="提交"/>  <html:reset value="重置"/>
</html:form>
</pre>
</center>
</html:html>

顯示正確結果的頁面
success.jsp

<%@ page contentType="text/html; charset=gb2312" %>
<center>
  歡迎你!!
</center>
提示警告的頁面

error.jsp

<%@ page contentType="text/html; charset=gb2312" %>
<center>
      不要意思,您的用戶名或密碼錯誤!
</center>

好了,下面到程序員真正該做的工作了,那就是寫java代碼啊。

一,不要問在什麼地方寫java代碼

二,不要問用什麼辦法把java代碼編譯成類文件

三,不要問把java文件和類文件放在什麼地方

……這樣的問題我不會再回答。

你千萬不要忘了要導入兩個JAR包啊

用來保存數據的form

UserForm.java

import org.apache.struts.action.*;

public class UserForm extends ActionForm

{

    private String userID = null;

    private String passWord = null;

    public String getUserID()   {

       return userID == null?"": userID.trim();

    }

    public void setUserID(String userID)  {

       this. userID = userID;

    }

    public String getPassWord()  {

       return passWord == null?"": passWord.trim();

    }

    public void setPassWord(String str2)   {

       this. passWord = passWord;

    }

}

看見了form了吧,沒什麼神氣的,就是一些屬性和關於屬性的get和set方法

用來處理數據的action

UserAction.java

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.actions.DispatchAction;

public class UserAction  extends DispatchAction

{

       public ActionForward execute(  ActionMapping mapping,

                                    ActionForm form,

                                    HttpServletRequest request,

                                    HttpServletResponse response)

           throws Exception

       {

           //獲取頁面表單信息

           UserForm uForm = (UserForm)form;

           //從from中獲得已經被提交的兩個數據

           String temp_id = uForm. getUserID();

            String temp_pass = uForm. getPassWord();

          

           if(!"".equals(temp_id)&&!"".equals(temp_pass))

           {

                     //定義數據庫的驅動程序(以下給出的是連接odbc數據庫的)

                  String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";

                        //定義數據庫的URL(名稱)

                  String strConnection="jdbc:odbc:user";

                        //數據訪問的用戶名

                  String strConnectUsername="";

                        //數據庫訪問的密碼

                  String strConnectPassword="";     

                  Connection conn = null;

                  Statement stmt = null;

                  ResultSet rs = null;

String sql_temp = "select * from userTable where

UserNo='"+temp_id+"' and

PassWord='"+temp_pass+"'";

                 

                  try

                  {

                            Class.forName(strDriver);//註冊驅動 

                  }

                  catch(ClassNotFoundException ex1)

                  {//捕獲驅動註冊過程中的異常

ex1.printStackTrace();                

}

                  try

                  {

                     conn =                           //獲得數據庫連接

                       DriverManager.getConnection(    strConnection,

 strConnectUsername,

                                                 strConnectPassword);

                               //創建Statement的對象stmt

                     stmt = conn.createStatement();

//利用stmt執行SQL操作返回結果集交給rs       

rs = stmt.executeQuery(sql_temp);                              }

                  catch(SQLException ex2)

                  {

                           ex2.printStackTrace();

                  }

                 

                  int temp_count = 0;

//通過這個循環看從數據庫中查詢出來了多少條記錄

                  while(rs.next())               

{

                     temp_count++;

                  }

                  //如果查詢有記錄,表明輸入的用戶名和密碼正確

if(temp_count>0)              

 {

                     return mapping.findForward("ok");

                  }

                  else//如果查詢沒有記錄,表明輸入的用戶名或者密碼錯誤

                  {

                      return mapping.findForward("err");

                  }

           }

           else

           {

              return mapping.findForward("err");

           }

       }

}

 

發佈了70 篇原創文章 · 獲贊 0 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章