- 1、怎麼用jsp連接mysql資料庫
- 2、jsp怎樣用jdbc連接mysql資料庫
- 3、jsp連接mysql資料庫的難點
- 4、jsp怎麼連接mysql資料庫
- 5、jsp中使用JDBC連接MySQL資料庫如何解決
- 6、jsp頁面中怎麼導入jdbc連接mysql
一. 資料庫的連接和操作筆記:
1.初始化連接字元串
2. 發送請求連接
3.如果需要對資料庫進行操作,如查詢,添加,刪除,修改等,則發送資料庫操作請 求,成功就返回結果,不成功操作失敗
4. 不進行操作就關閉資料庫操作,以及關閉資料庫發送請求
二.配置環境
」工欲善其事必先利其器「 在配置之前必須準備好幾個必要的文件java 的jdk(我用的是1.5),Tomcat(我的是5.5) ,mysql(5.0),jdbc(mysql-connector-java-3.1.14.zip) 的驅動,當然還有Dreamweaver 等等必要工具。
第一件事情:安裝jdk 1.5版本,安裝tomcat,mysql,解壓jdbc到包(官方網站有下載,註冊一個就行)
第二件事情:配置jdk,配置tomcat,jdbc
jdbc的配置:我的解壓目錄是 I:\mysql-connector-java-3.1.14 裡面可以看到一個mysql-connector-java-3.1.14-bin.jar 這個jar 的文件。右鍵打開電腦屬性—–高級—環境變數—找到系統變數。。點擊CLASSPATH,進行」編輯「 加入I:\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar 這個路徑去,這裡說明的我是盤式i盤,jdbc可以隨便解壓到那個盤都行,指定路徑就是。
第二步:jdbc解壓包下 mysql-connector-java-3.1.14-bin.jar 這個文件放入到Tomcat安裝目錄下
Tomcat 5.5\common\lib
Tomcat 5.5\shared\lib
這兩個文件夾裡面。
基本上的工作就完成了。呵呵(當然這個要看網上的資料,這裡要自己重新寫一次 唉好苦啊,沒得抄)
基本工作準備好,找一個mysql 資料庫的界面操作 GUI軟體 名字為: navicat(這個很好用)打開mysql,測試一下自己的mysql 可不可以連通,可以的話那麼就可以新建一個資料庫test,一個表為mytest,欄位是id和myname(這個隨便也行)
工具:
mysql
jsp頁面中怎麼導入jdbc連接mysql如下:
注意:一定要把mysql的環境變數配置到系統的環境變數中才可以,否則會連接失敗
1、jsp是java服務端動態網頁技術,主要應用於網頁構建,理論上講不應該在頁面中直接連資料庫。合理的做法是先構建一個java後端,然後在JAVA後端中通過jdbc連接sqlserver。
2、如果一定要在jsp頁面中連資料庫也是可以的。jsp中有專門的sql標籤可以連接資料庫進行操作,這是jstl的內容,需要導入相應的資料庫驅動包。
3、jsp的內容相對來說技術難度都不算特別高,學習起來還是比較容易的。
4、希望對你有幫助。
我寫的一個用JSP連接MySQL資料庫的代碼。
要正確的使用這段代碼,你需要首先在MySQL資料庫里創建一username表,表裡面創建兩個字元型的欄位,欄位名分別為:uid,pwd,然後插入幾條測試數據。
以下用兩種方式來實現JSP連接MySql資料庫。
第一種方式,用JSP實現。
%@ page contentType=”text/html; charset=gb2312″ language=”java”
import=”java.sql.*”%
%
//**************************************
********* JDBC_ODBC連接MySql資料庫,不需要設置數據源
*********************************/
//********** 資料庫連接代碼 開始 ******/
//以下幾項請自行修改
String server=”localhost”; //MYSQL 伺服器的地址
String dbname=”test”; //MYSQL 資料庫的名字
String user=”root”; //MYSQL 資料庫的登錄用戶名
String pass=”chfanwsp”; //MYSQL 資料庫的登錄密碼
String port=”3306″; //SQL Server 伺服器的埠號,默認為1433
//資料庫連接字元串
String url =”jdbc:mysql://”+server+”:”+port+”/”+dbname+”?user=”+user+
“password=”+pass+”useUnicode=truecharacterEncoding=GB2312”;
//載入驅動程序
Class.forName(“org.gjt.mm.mysql.Driver”).newInstance();
//建立連接
Connection conn= DriverManager.getConnection(url);
//創建語句對象
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
// **** 資料庫連接代碼 結束 *******
String sql=”select * from username”;
ResultSet rs=stmt.executeQuery(sql);
//rs.first();
while(rs.next()){
out.print(“用戶名:”);
out.print(rs.getString(“uid”)+” 密碼:”);
out.println(rs.getString(“pwd”)+”
“);
}
rs.close();
stmt.close();
conn.close();
%
第二種方式,用JavaBean來實現。請看代碼:
DBConnMySql.java
編譯以後的Class文件應該放在WEB-INF\classes\conn目錄下。
package conn; //導入包
import java.sql.*; //導入資料庫操作的類
public class DBConnMySql //構造方法,初始化
{
private Connection conn; //連接對象
private Statement stmt; //語句對象
private ResultSet rs; //結果集對象
private String MySqldriver;//MYSQL Server驅動程序字元串
private String MySqlURL; //MYSQL Server連接字元串
//********************************
*用 org.gjt.mm.mysql.Driver 驅動
* 該方法取得連接所需各種參數,組成連接字元串,然後再建立連接
* server;dbname,user,pass,port 分別表示MYSQL 伺服器的地址,
* 資料庫,用戶名,密碼,埠
**********************************/
public Connection getConnToMySql(String server,String dbname,
String user,String pass,String port){
//MYSQl驅動程序
MySqldriver = “org.gjt.mm.mysql.Driver”;
MySqlURL = “jdbc:mysql://”; //連接字元串一部分
try{
//完整的連接字元串
MySqlURL =MySqlURL+server+”:”+port+”/”+dbname+
“?user=”+user+”password=”+pass+
“useUnicode=truecharacterEncoding=GB2312”;
Class.forName(MySqldriver);
conn = DriverManager.getConnection(MySqlURL);
}catch(Exception e){
System.out.println(“操作資料庫出錯,請仔細檢查”);
//System.err.println(e.getMessage());
}
return conn;
}
//關閉資料庫連接
public void close()
{
try{
//rs.close();
//stmt.close();
conn.close();
}catch(SQLException sqlexception){
sqlexception.printStackTrace();
}
}
}
這個文件只是實現了資料庫的連接,下面我們再寫一個測試文件。
就是用sql語句從資料庫里查詢出記錄,以驗證我們資料庫的連接是否成功。
connmysql.jsp文件源代碼如下:
%@ page contentType=”text/html; charset=gb2312″ language=”java”
import=”java.sql.*” %
%
//以下幾項請自行修改
String server=”localhost”; //MYSQL 伺服器的地址
String dbname=”test”; //MYSQL 資料庫的名字
String user=”root”; //MYSQL 資料庫的登錄用戶名
String pass=”chfanwsp”; //MYSQL 資料庫的登錄密碼
String port=”3306″; //SQL Server 伺服器的埠號,默認為1433
Connection conn=DBConn.getConnToMySql(server,dbname,user,pass,port);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
String sql=”select * from username”;
String sql1=”insert into username (uid,pwd) values(‘夢想年華’,’夢想年華’)”;
stmt.executeUpdate(sql1);
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
out.print(“用戶名:”);
out.print(rs.getString(“uid”)+” 密碼:”);
out.println(rs.getString(“pwd”)+”
“);
}
//rs.close();
//stmt.close();
//conn.close();
DBConn.close();
%
在index.jsp中輸入如下代碼,並配置相應mySQL資料庫數據
%@ page language=”java” import=”java.util.*” pageEncoding=”utf-8″%
%@ page import=”java.sql.*” %
body
%
String driver = “com.mysql.jdbc.Driver”;
// URL指向要訪問的資料庫名test1
String url = “jdbc:mysql://127.0.0.1:3306/test”;
// MySQL配置時的用戶名
String user = “root”;
// Java連接MySQL配置時的密碼
String password = “111”;
try {
// 1 載入驅動程序
Class.forName(driver);
// 2 連接資料庫
Connection conn = DriverManager.getConnection(url, user, password);
// 3 用來執行SQL語句
Statement statement = conn.createStatement();
// 要執行的SQL語句
String sql = “select * from login”;
ResultSet rs = statement.executeQuery(sql);
String name = null;
String mima=null;
while (rs.next()) {
name = rs.getString(“userName”);
mima = rs.getString(“passWord”);
out.println(name+”\t”+mima);
}
rs.close();
conn.close();
} catch (ClassNotFoundException e) {
System.out.println(“Sorry,can`t find the Driver!”);
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
%
/body
12,這樣就運行成功了,對於出現8080埠號被佔用,可以採用如下的方法進行刪除對應的進程。
在命令提示符下,輸入netstat -aon | findstr 8080
找到對應的進程的PID,假設是7659 再輸入如下的命令
taskkill /pid 7659 /F
即可刪除對應的進程。
在項目lib中加入mysql的jar包,然後寫jdbc鏈接信息即可,如下提供多種鏈接方式希望對你有幫助
JDBC連接MySQL
載入及註冊JDBC驅動程序
Class.forName(“com.mysql.jdbc.Driver”);
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
JDBC URL 定義驅動程序與數據源之間的連接
標準語法:
protocol(主要通訊協議):subprotocol(次要通訊協議,即驅動程序名稱):data source identifier(數據源)
MySQL的JDBC URL格式:
jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][param2=value2]….
示例:jdbc:mysql://localhost:3306/sample_db?user=rootpassword=your_password
常見參數:
user 用戶名
password 密碼
autoReconnect 聯機失敗,是否重新聯機(true/false)
maxReconnect 嘗試重新聯機次數
initialTimeout 嘗試重新聯機間隔
maxRows 傳回最大行數
useUnicode 是否使用Unicode字體編碼(true/false)
characterEncoding 何種編碼(GB2312/UTF-8/…)
relaxAutocommit 是否自動提交(true/false)
capitalizeTypeNames 數據定義的名稱以大寫表示
建立連接對象
String url=”jdbc:mysql://localhost:3306/sample_db?user=rootpassword=your_password”;
Connection con = DriverManager.getConnection(url);
建立SQL陳述式對象(Statement Object)
Statement stmt = con.createStatement();
執行SQL語句
executeQuery()
String query = “select * from test”;
ResultSet rs=stmt.executeQuery(query);
結果集ResultSet
while(rs.next())
{rs.getString(1);rs.getInt(2);}
executeUpdate()
String upd=”insert into test (id,name) values(1001,xuzhaori)”;
int con=stmt.executeUpdate(upd);
execute()
示例:
try
{
}
catch(SQLException sqle)
{
}
finally
{
}
Java類型和SQL類型 技術手冊P421
PreparedStatement(預編語句)
PreparedStatement stmt = conn.prepareStatement(“insert into test(id,name)values(?,?)”);
stmt.setInt(1,id);
stmt.setString(2,name);
註:一旦設定語句的參數值後,就可以多次執行改語句,直到調用clearParameters()方法將他清除為止
CallableStatement(預儲程序)技術手冊P430
JDBC2.0使用
ResultSet對象中的游標上下自由移動
Statement stmt = con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery(“select * from test”);
public Statement createStatement(int resultSetType,int resultSetConcuttency) throws SQLException
resultSetType
TYPE_FORWARD_ONLY 只能使用next()方法。
TYPE_SCROLL_SENSITIVE 可以上下移動,可以取得改變後的值。
TYPE_SCROLL_INSENSITIVE 可以上下移動。
resultSetConcuttency
CONCUR_READ_ONLY 只讀
CONCUR_UPDATABLE ResultSet對象可以執行資料庫的新增、修改、和移除
直接使用ResultSet對象執行更新數據
新增數據
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSet uprs=stmt.executeQuery(“select * from test”);
uprs.moveToInsertRow();
uprs.updateInt(1,1001);
uprs.updateString(2,”許召日”);
uprs.insertRow;
更新數據
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSet uprs=stmt.executeQuery(“select * from test”);
uprs.last();
uprs.updateString(“name”,””);
uprs.updateRow;
刪除數據
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSet uprs=stmt.executeQuery(“select * from test”);
uprs.absolute(4);
uprs.deleteRow();
批處理
con.setAutoCommit(false); 關閉自動認可模式
Statement stmt=con.createStatement();
int[] rows;
stmt.addBatch(“insert into test values(1001,xuzhaori)”);
stmt.addBatch(“insert into test values(1002,xuyalin)”);
rows=stmt.executeBatch();
con.commit(); 沒有任何錯誤,執行批處理stmt.executeBatch();
JNDI-數據源(Data Source)與連接池(Connection Pool)
Tomcat的JDBC數據源設置 技術手冊P439
連接池工具-Proxool Var 0.8.3 技術手冊P446
設置web.xml
?xml version=”1.0″ encoding=”ISO-8859-1″?
!–?xml version=”1.0″ encoding=”GB2312″?–
web-app xmlns=””
xmlns:xsi=””
xsi:schemaLocation=””
version=”2.4″
….
servlet
servlet-nameServletConfigurator/servlet-name
servlet-classorg.logicalcobwebs.proxool.configuration.ServletConfigurator/servlet-class
init-param
param-namepropertyFile/param-name
param-valueWEB-INF/classes/Proxool.properties/param-value
/init-param
load-on-startup1/load-on-startup
/servlet
後端統計埠添加下列
servlet
servlet-nameAdmin/servlet-name
servlet-classorg.logicalcobwebs.proxool.admin.servlet.AdminServlet/servlet-class
/servlet
servlet-mapping
servlet-nameAdmin/servlet-name
url-pattern/Admin/url-pattern
/servlet-mapping
….
/web-app
配置Proxool.properties
jdbc-0.proxool.alias=JSPBook
jdbc-0.proxool.driver-class=com.mysql.jdbc.Driver
jdbc-0.proxool.driver-url=jdbc:mysql://localhost:3306/sample_db?user=rootpassword=browseruseUnicode=truecharacterEncoding=UTF-8
jdbc-0.proxool.maximum-connection-count=10
jdbc-0.proxool.prototype-count=4
jdbc-0.proxool.house-keeping-test-sql=select CURRENT_DATE
jdbc-0.proxool.verbose=true
jdbc-0.proxool.statistics=10s,1m,1d 後端統計介面添加此行
jdbc-0.proxool.statistics-log-level=DEBUG
使用Proxool連接池
Connection con = DriverManager.getConnection(“proxool.JSPBook”);
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
String query = “SELECT * FROM employee”;
ResultSet rs = stmt.executeQuery(query);
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126919.html