首先你要導包
專注于為中小企業提供成都網站建設、成都網站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業婺城免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了上千企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
JDBC連接數據庫 ?
?創建一個以JDBC連接數據庫的程序,包含7個步驟:
1、加載JDBC驅動程序:
在連接數據庫之前,首先要加載想要連接的數據庫的驅動到JVM(Java虛擬機),
這通過java.lang.Class類的靜態方法forName(String ?className)實現。
例如:
try{
//加載MySql的驅動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅動程序類 ,加載驅動失??!");
e.printStackTrace() ;
}
成功加載后,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL
?連接URL定義了連接數據庫時的協議、子協議、數據源標識。 ? ? ?
?書寫形式:協議:子協議:數據源標識
協議:在JDBC中總是以jdbc開始 ? ? ? 子協議:是橋連接的驅動程序或是數據庫管理系統名稱。
數據源標識:標記找到數據庫來源的地址與連接端口。
例如:
(MySql的連接URL)
jdbc:mysql: ? ? ? ? ? //localhost:3306/test?useUnicode=truecharacterEncoding=gbk ;
useUnicode=true:
表示使用Unicode字符集。如果characterEncoding設置為 ? ? ?gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字符編碼方式。
3、創建數據庫的連接
?要連接數據庫,需要向java.sql.DriverManager請求并獲得Connection對象, ? ? ? ?該對象就代表一個數據庫的連接。
?使用DriverManager的getConnectin(String url , String username , ? ? ? ?String password )方法傳入指定的欲連接的數據庫的路徑、數據庫的用戶名和 ? ? ? ?密碼來獲得。
例如: ? ? ? ?//連接MySql數據庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{ ? ? ?
Connection con = ? ? ? ? ? ? ? ? DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("數據庫連接失?。?);
se.printStackTrace() ;
}
4、創建一個Statement
?要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3 ? ? ? 種類型:
1、執行靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。 ? ? ? ?
3、執行數據庫存儲過程。通常通過CallableStatement實例實現。
具體的實現方式:
Statement stmt = con.createStatement() ; ? ? ? ? ?PreparedStatement pstmt = con.prepareStatement(sql) ; ? ? ? ? ?CallableStatement cstmt = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?con.prepareCall("{CALL demoSp(? , ?)}") ; ? ?
5、執行SQL語句
Statement接口提供了三種執行SQL語句的方法:executeQuery 、executeUpdate ? ? ?和execute
1、ResultSet executeQuery(String sqlString):執行查詢數據庫的SQL語句 ? ? ? ? ? ,返回一個結果集(ResultSet)對象。
2、int executeUpdate(String sqlString):用于執行INSERT、UPDATE或 ? ? ? ? ? DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等 ? ? ? ?
3、execute(sqlString):用于執行返回多個結果集、多個更新計數或二者組合的 ? ? ? ? ? 語句。 ? ? ?具體實現的代碼:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ; ? ? ? int rows = stmt.executeUpdate("INSERT INTO ...") ; ? ? ? boolean flag = stmt.execute(String sql) ; ? ?
6、處理結果 ? ? ? 兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。
? ResultSet包含符合SQL語句中條件的所有行,并且它通過一套get方法提供了對這些 ? ? ? ? 行中數據的訪問。
? 使用結果集(ResultSet)對象的訪問方法獲取數據:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比較高效
} ? ? ?
(列是從左到右編號的,并且從列1開始)
7、關閉JDBC對象
操作完成以后要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲 ? ? ? ?明順序相反:
1、關閉記錄集
2、關閉聲明
3、關閉連接對象
if(rs != null){ ? // 關閉記錄集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ ? // 關閉聲明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ ?// 關閉連接對象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
根據下面這幾個步驟,選擇操作
①
首先把mysql的服務停掉
在運行窗口輸入:net
stop
mysql
②
把服務器和客戶端的字符集改成自己想用的字符集:gb2312或是utf8等……
具體操作為:打開mysql安裝目錄下的myini.tet;
找到default-character-set,將其改為自己想用的字符集:gb2312或是utf8等……,要注意的是這里有兩個default-character-set,用ctrl+f定位在文件最前面輸入default就會找到,都要改過來;
③
重啟mysql服務器,在運行窗口輸入:net
start
mysql
④
最重要的是一點是,到這里我們已經能夠解決亂碼問題了,可問題是我們依然還會出現亂碼問題,這是因為我們現在的表被創建的時候用的是默認的字符集(latin1),所以這時候我們要把表刪除,然后重建就可以了
import java.sql.*;
public class DataBasePractice {
public static void main(String[] args) {
//聲明Connection對象
Connection con;
//驅動程序名
String driver = "com.mysql.jdbc.Driver";
//URL指向要訪問的數據庫名mydata
String url = "jdbc:mysql://localhost:3306/mydata";
//MySQL配置時的用戶名
String user = "root";
//MySQL配置時的密碼
String password = "root";
//遍歷查詢結果集
try {
//加載驅動程序
Class.forName(driver);
//1.getConnection()方法,連接MySQL數據庫??!
con = DriverManager.getConnection(url,user,password);
if(!con.isClosed())
System.out.println("Succeeded connecting to the Database!");
//2.創建statement類對象,用來執行SQL語句!!
Statement statement = con.createStatement();
//要執行的SQL語句
String sql = "select * from student";
//3.ResultSet類,用來存放獲取的結果集??!
ResultSet rs = statement.executeQuery(sql);
System.out.println("-----------------");
System.out.println("執行結果如下所示:");
System.out.println("-----------------");
System.out.println(" 學號" + "\t" + " 姓名");
System.out.println("-----------------");
String name = null;
String id = null;
while(rs.next()){
//獲取stuname這列數據
name = rs.getString("stuname");
//獲取stuid這列數據
id = rs.getString("stuid");
//首先使用ISO-8859-1字符集將name解碼為字節序列并將結果存儲新的字節數組中。
//然后使用GB2312字符集解碼指定的字節數組。
name = new String(name.getBytes("ISO-8859-1"),"gb2312");
//輸出結果
System.out.println(id + "\t" + name);
}
rs.close();
con.close();
} catch(ClassNotFoundException e) {
//數據庫驅動類異常處理
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch(SQLException e) {
//數據庫連接失敗異常處理
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
System.out.println("數據庫數據成功獲取??!");
}
}
}
在上面while代碼段后面添加以下代碼段:
String name = null;
String id = null;
while(rs.next()){
//獲取stuname這列數據
name = rs.getString("stuname");
//獲取stuid這列數據
id = rs.getString("stuid");
//首先使用ISO-8859-1字符集將name解碼為字節序列并將結果存儲新的字節數組中。
//然后使用GB2312字符集解碼指定的字節數組。
name = new String(name.getBytes("ISO-8859-1"),"gb2312");
//輸出結果
System.out.println(id + "\t" + name);
}
PreparedStatement psql;
ResultSet res;
//預處理添加數據,其中有兩個參數--“?”
psql = con.prepareStatement("insert into student values(?,?)");
psql.setInt(1, 8); //設置參數1,創建id為5的數據
psql.setString(2, "xiaogang"); //設置參數2,name 為小明
psql.executeUpdate(); //執行更新
//預處理更新(修改)數據
psql = con.prepareStatement("update student set stuname = ? where stuid = ?");
psql.setString(1,"xiaowang"); //設置參數1,將name改為王五
psql.setInt(2,10); //設置參數2,將id為2的數據做修改
psql.executeUpdate();
//預處理刪除數據
psql = con.prepareStatement("delete from student where stuid = ?");
psql.setInt(1, 5);
psql.executeUpdate();
//查詢修改數據后student表中的數據
psql = con.prepareStatement("select*from student");
res = psql.executeQuery(); //執行預處理sql語句
System.out.println("執行增加、修改、刪除后的數據");
while(res.next()){
name = res.getString("stuname");
id = res.getString("stuid");
name = new String(name.getBytes("ISO-8859-1"),"gb2312");
System.out.println(id + "\t" + name);
}
res.close();
psql.close();
下面是一個從 mysql 數據庫獲取用戶信息的例子,可以參考一下:
import?java.sql.Connection;
import?java.sql.DriverManager;
import?java.sql.ResultSet;
import?java.sql.SQLException;
import?java.sql.Statement;
import?java.util.ArrayList;
import?java.util.List;
//?用戶類,存儲單個用戶信息
class?User?{
private?int?id;
private?String?name;
public?User(int?id,?String?name)?{
this.id?=?id;
this.name?=?name;
}
public?int?getId()?{
return?id;
}
public?void?setId(int?id)?{
this.id?=?id;
}
public?String?getName()?{
return?name;
}
public?void?setName(String?name)?{
this.name?=?name;
}
@Override
public?String?toString()?{
return?"User?[id="?+?id?+?",?name="?+?name?+?"]";
}
}
public?class?Demo1?{
public?static?void?main(String[]?args)?throws?ClassNotFoundException,?SQLException?{
//?本例使用?mysql?數據庫,演示將數據庫?test?的?tb_users?表中的用戶信息
//?放到?List?中
//?加載數據驅動
Class.forName("com.mysql.jdbc.Driver");
//?數據庫連接字符串,?此例數據庫為?test
String?url?=?"jdbc:mysql://localhost:3306/test";
String?user?=?"root";????//?數據庫用戶名
String?password?=?"";????//?數據庫密碼
//?打開一個數據連接
Connection?conn?=?DriverManager.getConnection(url,?user,?password);
Statement?stmt?=?conn.createStatement();
//?獲取表?tb_users?所有用戶信息到結果集中
ResultSet?rs?=?stmt.executeQuery("SELECT?id,?name?FROM?tb_users");
//?定義一個存放用戶信息的?List
ListUser?users?=?new?ArrayList();
//?提取用戶信息,并將用戶信息放入?List
while?(rs.next())?{
//?獲取用戶ID
int?id?=?rs.getInt(1);
//?獲取用戶名
String?name?=?rs.getString(2);
users.add(new?User(id,?name));
}
rs.close();
stmt.close();
conn.close();
//?顯示用戶信息
for?(User?u?:?users)?{
System.out.println(u);
}
}
}
網站標題:java代碼mysql java代碼怎么運行
轉載來于:http://vcdvsql.cn/article44/dopjiee.html
成都網站建設公司_創新互聯,為您提供App設計、關鍵詞優化、手機網站建設、網站排名、做網站、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯