數據庫編程的一些基本步驟:
註冊驅動
創建數據庫連接
執行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");
}
}
}