程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> jsp中的數據庫編程

jsp中的數據庫編程

編輯:關於JSP

一,SQL復習
1,SQL語句分為兩類:DDL(Data Definition Language)和DML(Dat Manipulation Languge,數據操作語言)。前者主要是定義數據邏輯結構,包括定義表、視圖和索引;DML主要是對數據庫進行查詢和更新操作。
2,Create Table(DDL):
Create Table tabName(
colName1 colType1 [else],
colName2 colType2 [else],
...,
colNamen colTypen [else]
);
例如:Cteate Table pJoiner(
pno char(6) not null,
eno char(6) nut null
);
char int varchar等等都是用來定義列數據類型的保留字,其中varchar表示可變字符類型。
3,Select <col1>,<col2>,...,<coln>
From <tab1>,<tab2>,...,<tabm>
[Where<條件>]

條件中的子查詢:
Where Not Exists(
Select * From tab2 Where col1=col2
)//當查詢結果為空時,條件為真。

4,INSERT INTO <tab1> VALUES(<col1>, ...<coln>)
5,DELETE FROM <tab1> [WHERE<條件>]
6,UPDATE <tab1>
SET <tab1>=<vlu1>
...
<tabn>=<vlun>
[WHERE<條件>]
例如:
Update exployee
Set age=27
Where name=趙一
二,JDBC 主要接口:
java.sql.DriverManager類用於處理驅動程序的調入並且對新的數據庫連接提供支持。
java.sql.Connection,指應用程序與特定數據庫的連接。
java.sql.Statement,用於一般sql語句的執行(可以是查詢、更新甚至可以創建數據庫的執行過程)
java.sql.ResultSet,查詢所返回的結果保存在此對象中,用它可以浏覽和存取數據庫內的記錄。

1,通過jdbc-odbc橋使用odbc數據庫(並不需要jdbc Drivers)

先在odbc DSN(Data Source Name)設置處設置pubs sysDSN,sa為username,密碼為空
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加載驅動程序
con=DriverManager.getConnection("jdbc:odbc:pubs","sa","");//jdbc:odbc:pubs
con.close();
//應當catch ClassNotFoundException和SQLException

Connection的getWarning方法返回一個SQLWarning對象,在連接之前應當先檢查。
使用jdbc-odbc的最大好處是:免費的。但是性能受odbc的限制,而且一般odbc驅動比較昂貴。
2,使用專門的jdbc驅動程序。//此處是mm jdbc Driver
先將jar文件放在ClassPath裡面。
Class.forName("org.gjt.mm.MySQL(和PHP搭配之最佳組合).Driver");
con=DriverManager.getConnection("jdbc:MySQL(和PHP搭配之最佳組合)://localhost:3306/dbname","root","");
con.close();

可見使用何種方式連接何種數據庫與數據庫的操作和連接數據庫是無關的。
三,查詢數據庫
Statement stmt=con.createStatement();
stmt.setMaxRows()可以控制輸出記錄最大數量;
ResultSet rs=stmt.executeQuery("select .....");

ResultSet指向當前記錄:
int userId=rs.getInt("userid");
String userName=rs.getString("username");
...或者用序號(從1開始的)
int userId=rs.getInt(1);
Stirng userName=rs.getString(2);

ClassNotFoundException是由於Class.forName()無法載入jdbc驅動程序觸發的
SQLException是jdbc在執行過程中發生問題時產生。有一個額外的方法getNextException()
catch(SQLException e){
out.println(e.getMessage());
while(e=e.getNextException()){
out.println(e.getMessage());
}
}

一般來說並不建議在jsp(SUN企業級應用的首選)中編寫數據庫的訪問程序,可以將數據庫的訪問封裝在一個javabean中。
四,ResultSet深入
1,ResultSetMetaData
ResultSet rs=stmt.executeQuery("select....");
ResultSetMetaData rsmd=rs.getMetaData(); //獲取ResultSetMateData對象
int numberOfColumns=rsmd.getColumnCount();//返回列數
boolean b=rsmd.isSearchable(int i);//返回第i列是否可以用於where子句
String c=rsmd.getColumnLabel(int i);//獲取第i列的列標
Objcet obj=rs.getObject();
if(obj!=null)out.println(obj.toString());
else println("");
2,SQL類型與ResultSet的getObject返回類型及對應的XXX getXXX()方法
SQL類型 jsp(SUN企業級應用的首選)類型 對應的getXXX()方法
————————————————————————————————————————————
CHAR String String getString()
VARCHAR String String getString()
LONGVARCHAR String InputStream getAsciiStream()/getUnicodeStream()
NUMERIC java.math.BigDecimal java.math.BigDecimal getBigDecimal()
DECIMAL 同上
BIT Boolean boolean getBoolean()
TINYINT Integer byte getByte()
SMALLINT Integer short getShort()
INTEGER Integer int getInt()
BIGINT Long long getLong()
REAL Float float getFloat()
FLOAT Double double getDouble()
DOUBLE Double double getDouble()
BINARY byte[] byte[] getBytes()
VARBINARY byte[] byte[] getBytes()
LONGVARBINARY byte[] InputStream getBinaryStream()
DATE java.sql.Date java.sql.Date getDate()
TIME java.sql.Time java.sql.Time getTime()
TIMESTAMP java.sql.Timestamp java.sql.Timestamp getTimestamp()

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved