| userid | int(11) | | PRI | 0 | auto_increment |
| username | char(20) | | | | |
| sex | char(2) | | | | |
| address | char(40) | YES | | NULL | |
| ip | char(15) | | | | |
| post | int(11) | YES | | 0 | |
| oicq | int(11) | YES | | 0 | |
| icq | int(11) | YES | | 0 | |
| telnumber | char(30) | YES | | NULL | |
| comment | text | | | NULL | |
| time | datetime | | | 0000-00-00 00:00:00 | |
+-----------+-------------+------+-----+---------------------+----------------+
如果你認為建立數據庫太麻煩的話
建立數據庫的語句為:
DROP DATABASE IF EXISTS pinghui;
CREATE DATABASE pinghui;
USE pinghui;
CREATE TABLE comment(
userid int NOT NULL DEFAULT 0 AUTO_INCREMENT PRIMARY KEY,
username char(20) NOT NULL,
sex char(2),
address char(40),
ip char(15) NOT NULL,
post int DEFAULT 0,
oicq int DEFAULT 0,
icq int DEFAULT 0,
telnumber char(30),
comment text NOT NULL,
time datetime NOT NULL
);
INSERT INTO comment (username,ip,comment,time) VALUES ("pinghui","127.0.0.1",
try{Page=Integer.parseInt(string_page);
}catch(NumberFormatException e)
{Page=0;
}
java.sql.Connection sqlConn; //數據庫連接對象
java.sql.Statement sqlStmt; //語句對象
java.sql.ResultSet sqlRst; //結果集對象
//登記JDBC驅動對象
Class.forName ("org.gjt.mm.mysql.Driver").newInstance ();
//連接數據庫
sqlConn= java.sql.DriverManager.getConnection ("jdbc:mysql://localhost/p","test","");
//創建語句對象
sqlStmt=sqlConn.createStatement
(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//執行Sql語句
String sqlQuery="select count(*) from comment";
sqlRst=sqlStmt.executeQuery (sqlQuery);
sqlRst.next();
int count=sqlRst.getInt(1); //取得總的留言記錄數
if (Page>=0)RecoderPage=Page;//處理頁面
else RecoderPage=0-Page*10;
if (RecoderPage>count/15){ RecoderPage=count/15; Page=RecoderPage; }//頁面越界
RecoderRow=RecoderPage*15; //取得要顯示的留言記錄號
sqlQuery="select * from comment order by userid desc limit "+RecoderRow+",15;"; //一次讀取15條記錄
sqlRst=sqlStmt.executeQuery (sqlQuery);
%> 總共有<%=count%>條留言
<% while (sqlRst.next()) //顯示留言
{ //取得下一條記錄 %> 第<%=sqlRst.getString("userid")%>條
昵稱:<%=sqlRst.getString("username")%> | 性別:<%=sqlRst.getString("sex")%> | 地址:<%=sqlRst.getString("address") %> | |
電話:<%=sqlRst.getString("telnumber")%> | 郵編:<%=sqlRst.getString("post")%> | OICQ:<%=sqlRst.getString("oicq")%> | ICQ:<%=sqlRst.getString("icq")%> |
Email: " title="寫信給留言者"><%=sqlRst.getString("email")%> | 網址: " title="寫信給留言者"> <%=sqlRst.getString("urltitle")%> | ||
留言:<%=sqlRst.getString("comment")%> -<%=sqlRst.getString("time") %> (來自<%=sqlRst.getString("ip") %>) |
%
//關閉結果集對象
sqlRst.close();
//關閉語句對象
sqlStmt.close ();
//關閉數據庫連接
sqlConn.close();
%> 程序結束
程序中的不足:
沒有對錯誤進行捕捉,但是這里只為了對jsp讀取Mysql數據庫進行講解。如果是用與作留言本的話一定要對錯誤進行處理! 我們還要留言呢?
下面我們開始建立留言的頁面!
<%@page
import ="java.util.*"
import ="java.text.*"
import="java.sql.*"
import ="java.io.*"
import ="java.lang.*"
contentType="text/html; charset=gb2312"
%>
<%
class CommentError// throws java.lang.NullPointerException
{ public String Username="",Sex="",Address="",Postal="",Oicq="",Icq="",Tel="",Comment="";
public boolean NoError=true;//false;
public int ErrorCount=0;
private boolean IsNumber(String s1) {}
public String font (String se) {}
public String Comment_Er(String se) {}
public void Username (String se) {}
public void Sex (String se) {}
public void Address (String se) {}
public void Comment (String se) {}
public void Tel (String se) {}
public void Postal (String se) {}
public void Oicq (String se) {}
public void Icq (String se) {}
}
class FormatComment
{ public String Replace(String source, String oldString, String newString) {}
public String formatint(String se) {}
public String fromatcomment(String se) {}
public String toHtmlInput(String str) {}
public String toHtml(String str) {}
public String toSql(String str) {}//轉換為可以加入Myqal的格式
}
%>
<%! String username,sex,address,post,oicq,icq,telnumber,comment,email,url.urltitle;
%>
<%
try{ username=request.getParameter("name");
}catch (NullPointerException e){ username="";}
try{ comment=request.getParameter("comment");
}catch (NullPointerException e){ comment="";}
try{ sex=request.getParameter("sex");
}catch (NullPointerException e){ sex="";}
try{ address=request.getParameter("address");
}catch (NullPointerException e){ address="";}
try{ post=request.getParameter("postal");
}catch (NullPointerException e){ post="";}
try{ oicq=request.getParameter("oicq");
}catch (NullPointerException e){ oicq="";}
try{ icq=request.getParameter("icq");
}catch (NullPointerException e){ icq="";}
try{ telnumber=request.getParameter("telphone");
}catch (NullPointerException e) { telnumber= ""; }
try{ email=request.getParameter("email");
}catch (NullPointerException e) { email= ""; }
try{ url=request.getParameter("url");
}catch (NullPointerException e) { url= ""; }
try{ urltitle=request.getParameter("urltitle");
}catch (NullPointerException e) { urltitle= ""; }
String ip=request.getRemoteAddr();//得到IP地址
String time=(new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss", Locale.US )).format(new java.util.Date());
String userid="";
String MyQuery="";
此處我調用了一個對留言進行合法檢驗的類
CommentError testcomment= new CommentError();
testcomment.Username(username);
testcomment.Postal (post);
testcomment.Sex(sex);
testcomment.Address(address);
testcomment.Tel(telnumber);
testcomment.Comment(comment);
testcomment.Oicq(oicq);
testcomment.Icq(icq);
if (testcomment.NoError) //留言中沒有錯誤,寫數據庫
try {//寫數據庫成功
java.sql.Connection sqlConn; //數據庫連接對象
java.sql.Statement sqlStmt; //語句對象
java.sql.ResultSet sqlRst; //結果集對象
//登記JDBC驅動對象
Class.forName ("org.gjt.mm.mysql.Driver").newInstance ();
//連接數據庫
sqlConn= java.sql.DriverManager.getConnection ("jdbc:mysql://localhost/pinghui","test","");
//創建語句對象
sqlStmt=sqlConn.createStatement (java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//執行Sql語句
此處調用了一個對留言進行處理的類,是留言能被Mysql承認,
FormatComment FC= new FormatComment();
oicq=FC.formatint(oicq);
icq=FC.formatint(icq);
post=FC.formatint(post);
telnumber=FC.formatint(telnumber);
username=FC.toSql(username);
comment=FC.toSql(comment);
MyQuery="insert into comment (username,sex,address,ip,post,oicq,icq,telnumber,comment,time,url,email) values ('"+username+"','"+sex+"','"+address+"','"+ip+"',"+post+","+oicq+","+icq+",'"+telnumber+"','"+comment+"',now(),'"+url+"','"+email+"');";
sqlRst=sqlStmt.executeQuery (MyQuery); //向數據庫中加入數據
sqlRst.close();//關閉結果集對象
sqlStmt.close ();//關閉語句對象
sqlConn.close(); //關閉數據庫連接
out.print (time);
%>
留言成功,謝謝!
昵稱:<%=username%> | 性別:<%=sex%> | 地址:<%=address %> | |
電話:<%=telnumber%> | 郵編:<%=post%> | OICQ:<%=oicq%> | ICQ:<%=icq%> |
Email: | 網址: | ||
留言:<%=comment%> -<%=time %>(來自<%=ip %>) |
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com