javascript數據庫,JSP初學大全!!帶連接數據庫例子

 2023-11-09 阅读 21 评论 0

摘要:1。java是大小寫敏感的,用過其他編程語言的人最容易犯這個錯誤,尤其是剛上手的時候。我剛開始調試jsp的時50%以上的編譯錯誤是都是因為這個。javascript數據庫? 2。java的調用過程都是要加括號的,一開始比較容易忽視,如title=request.getPar


1。java是大小寫敏感的,用過其他編程語言的人最容易犯這個錯誤,尤其是剛上手的時候。我剛開始調試jsp的時50%以上的編譯錯誤是都是因為這個。javascript數據庫?

2。java的調用過程都是要加括號的,一開始比較容易忽視,如title=request.getParameter(\"title\").trim();

3。jsp中對應asp中的request.form()和request.querystring()的解決方法。數據庫實例名是什么,
jsp中取得參數沒有form和queryString之分,都是通過request.getParameter(\"XXXX\")來取得。雖然jsp也有request.getQueryString()方法,但測試結果是 test.jsp?id=1&page=20 得到 id=1&page=20。
  如果url和form有相同的參數名稱呢?下面是一段測試代碼:
<form method=\"POST\" action=\"query.jsp?id=2\">
 <input type=\"text\" name=\"id\" value=\"1\" size=\"60\">
</form>
name都是id,結果是url的參數優先得到,jsp的這種處理方式和asp相比我覺的各有所長。數據庫表設計例子、

4。頭疼的漢字處理問題。
在其他的文章里曾說到在中文NT環境下如下語句輸出會得到亂碼,
<%=\"你好\"%> 及 out.print(\"你好\");等。數據庫建立?解決方法是只要對字符串變量進行編碼就可以得到正確結果,如下代碼可以得到正確的輸出:
<% String title=\"你好\";
 byte[] tmpbyte=title.getBytes(\"ISO8859_1\");
 title=new String(tmpbyte);
 out.print(title); %>
或者<%=title%>

關于sql語句漢字問題,例句為 select * from test where title=\'誰是傻瓜\'
在jdbc-odbc驅動下連db2,不管是原句還是對sql語句進行編碼后都死活通不過。
換了ibm的jdbc直接驅動后,對sql語句編碼后程序可以通過。

這個問題的產生大概是中文NT的原因,在其他環境下可能就沒漢字處理問題了,據說ibm的web sphere對中文支持的很好,這也給jsp的開發帶來一定的通用性問題。數據庫?據說對字符串編碼是一種通用的解決方法,不過沒有這么多環境來測試。

5。在asp中經常使用到字符串判斷語句如 if state=\"真是傻瓜\" then.....
  在java中String變量不是一個簡單的變量而是一個類實例,不同的方法會得到不同的結果
a.
String str1=\"我是傻瓜\";
String str2=\"我是傻瓜\"; (or String str2=\"我是\"+\"傻瓜\"; )
if (str1==str2)
 out.print(\"yes\");
else 
 out.print(\"no\");
結果是\"yes\"。javascript寫入數據到數據庫?
大概是編譯優化,str1,str2指向同一個類實例;

b.
String str1,str2,str3;
str1=\"我是傻瓜\";
str2=\"我是\";
str3=str2+\"傻瓜\";
if (str1==str3)
 out.print(\"yes\");
else
 out.print(\"no\");
結果是\"no\"。

String str1=new String(\"我是傻瓜\");
String str2=new String(\"我是傻瓜\");
if (str1==str2)
 out.print(\"yes\");
else
 out.print(\"no\");
結果是\"no\"。

String str1=new String(\"我是傻瓜\");
String str2=new String(\"我是傻瓜\");
if (str1.compareTo(str2)==0)
 out.print(\"yes\");
else
 out.print(\"no\");
結果是\"yes\"。javaweb如何連接數據庫、

所以在jsp中判斷字符串要使用compareTo方法,用慣傳統語言還真一下子適應不過來,熟悉java的朋友應該沒這個問題。

6。如何判斷數據庫為空?
  result = stmt.executeQuery(sql);
  if (result.next())
   ......
  result執行后游標出于一個未明的狀態,不能進行狀態判斷,也不能取值,一定要next()一下才可以用。
 

7。在jsp中實現分頁。
page是關鍵字,不能當變量。
conn.jsp
<%
  String sDBDriver = \"COM.ibm.db2.jdbc.app.DB2Driver\";
  String sConnStr = \"jdbc:db2:faq\";
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs=null;
    try {
        Class.forName(sDBDriver);  
  }
    catch(java.lang.ClassNotFoundException e)   {
    out.print(\"faq(): \" + e.getMessage());
  }
  
  try{
    conn = DriverManager.getConnection(sConnStr,\"wsdemo\",\"wsdemo1\");    
    stmt = conn.createStatement();
  }catch(SQLException e){
    out.print(e.toString());
  }
%>

query.jsp

<%@ page language=\"java\" import=\"java.sql.*\" %>
<%@ page contentType=\"text/html; charset=gb2312\" %>
<%@ include file=\"conn.jsp\" %>
<%
.......
int pages=0;
int pagesize=10;
ResultSet result = null;
ResultSet rcount = null;

pages = new Integer(request.getParameter(\"pages\")).intValue();

if (pages>0)
{

String sql=\" state=\'我不傻\'\";
int count=0;
try {
rcount = stmt.executeQuery(\"SELECT count(id) as id from user where \"+sql);
catch(SQLException ex) {
 out.print(\"aq.executeQuery: \" + ex.getMessage());
 }
if(rcount.next())
 count = rcount.getInt(\"id\");
rcount.close();

if (count>0)
{
sql=\"select * from user where \"+sql;
try {
result = stmt.executeQuery(sql);
  }
catch(SQLException ex) {
 out.print(\"aq.executeQuery: \" + ex.getMessage());
 }

int i;
String name;
// result.first();
// result.absolute((pages-1)*pagesize);
// 此方法jdbc2.0支持。編譯通過,但執行不過,不知是不是跟驅動有關,只好用下面的笨辦法。
for(i=1;i<=(pages-1)*pagesize;i++)
 result.next();
for(i=1;i<=pagesize;i++) {
 if (result.next()) {
 name=result.getString(\"name\");
 out.print(name);
 }
result.close();
int n= (int)(count/pagesize);
if (n*pagesize<count) n++;
if (n>1)
{
for(i=1;i<=n;i++)
  out.print(\"<a href=query.jsp?pages=\"+i+\">\"+i+\" </a>\");
}
}
}
%>




現在有好多初學jsp的網友經常會問數據庫怎么連接啊,怎么老出錯啊?所以我集中的在這寫篇文章供大家參考,其實這種把數據庫邏輯全部放在jsp里未必是好的做法,但是有利于初學者學習,所以我就這樣做了,當大家學到一定程度的時候,可以考慮用MVC的模式開發。在練習這些代碼的時候,你一定將jdbc的驅動程序放到服務器的類路徑里,然后要在數據庫里建一個表test,有兩個字段比如為test1,test2,可以用下面SQL建
create table test(test1 varchar(20),test2 varchar(20)
然后向這個表寫入一條測試紀錄
那么現在開始我們的jsp和數據庫之旅吧。
一、jsp連接Oracle8/8i/9i數據庫(用thin模式)
testoracle.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl為你的數據庫的SID
String user="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
二、jsp連接Sql Server7.0/2000數據庫
testsqlserver.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs為你的數據庫的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
三、jsp連接DB2數據庫
testdb2.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample為你的數據庫名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
四、jsp連接Informix數據庫
testinformix.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";
//testDB為你的數據庫名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
五、jsp連接Sybase數據庫
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/tsdata";
//tsdata為你的數據庫名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
六、jsp連接MySQL數據庫
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//testDB為你的數據庫名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
七、jsp連接PostgreSQL數據庫
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/soft"
//soft為你的數據庫名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/169154.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息