JDBC操作步驟
程序 --> 加載驅動 --> 數據庫連接 --> 數據庫操作指令 --> 關閉
指定的連接地址 例,SQL指定 釋放資源
|
classpath指定
|
-->classpath - 指定 ->驅動程序
連接數據庫
配置MySql數據庫的驅動程序
使用MySql數據庫進行開發,則必須將MySql數據庫程序配置到CLASSPATH ,沒有的話自己新建一個“用戶變量”,如:
變量名:CLASSPATH
變量值:.;d:\MySQL\mysql-connector-java-5.1.13-bin.jar;
內容與內容之前用“;”分割。
加載驅動程序
加載驅動程序是JDBC操作的第一步。MySQL中的數據庫驅動程序路徑是org.gjt.mm.mysql.Driver。
例:加載驅動程序
public class ConnectionDemo {
//定義MySQL的數據庫驅動程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
public static void main(String args[]){
try{
Class.forName(DBDRIVER) ; //加載驅動程序
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
}
}
如果以上程序可以正常運行,則驅動程序已經配置成功。
配置出錯時的解決!
如果配置時出現了以下的錯誤提示:
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
則肯定是CLASSPATH設置有問題。
如果在CLASSPATH設置上搞不清楚,那就直接在eclipse中直接導入包操作:
在項目文件中有個src文件夾,右擊 Build Path --> Configure Build Path --> Libraries --> Add External JARs... --> 找到d:\MySQL\mysql-connector-java-5.1.13-bin.jar
之後再運行程序,如果不知道是否正確則可在try語句中加一個打印出“OK” ,有的話就加載成功了。
連接及關閉數據庫
使用DriverManager類連接數據庫。
DriverManager類的常用方法
通過連接地址連接數據庫
public static Connection getConnection(String url)
throws SQLException
通過連接地址連接數據庫,同時輸入用戶名和密碼
public static Connection getConnection(String url,
String user,
String password)
throws SQLException
MySQL數據庫的連接地址格式
jdbc:mysql://IP地址:端口號/數據庫名稱
現在本機上存在一個mldn的數據庫,此時的地址爲jdbc:mysql://localhost:3306/mldn
提示:數據庫連接地址的形式
JDBC雖然提供了與平臺無關的數據庫操作,但各個數據庫的連接地址是有差異的,JDBC的連接地址實際上由以下3個部分組成。
--> jdbc協議:JDBC URL 中的協議總是jdbc 。
--> 子協議:驅動程序名或數據庫連接機制(這種機制可由一個或多個驅動程序支持)的名稱,如mysql。
--> 子名稱:一種標識數據庫的方法。必須遵循“//主機名:端口/子協議”的標準URL命名約定,如//localhost:3306/mldn。
Connection類
例:連接數據庫
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionDemo02 {
//定義MySQL的數據庫驅動程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
//定義MySQL數據庫的連接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
//MySQL數據庫的連接用戶名
public static final String DBUSER = "root" ;
//MySQL數據庫的連接密碼
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[]){
Connection conn = null ; //數據庫連接
try{
Class.forName(DBDRIVER) ; //加載驅動程序
}catch(ClassNotFoundException e){
e.printStackTrace() ;
}
try{
//連接MySQL數據庫時,要寫上連接的用戶名和密碼
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
}catch(SQLException e){
e.printStackTrace() ;
}
System.out.println(conn);
try{
conn.close() ; //數據庫關閉
}catch(SQLException e){
e.printStackTrace() ;
}
}
}
輸出:
com.mysql.jdbc.JDBC4Connection@1891d8f
程序的運行結果不爲空,說明此時數據庫已經連接成功。
若此時運行結果發生異常,則檢查一下MySQL的服務項有沒有開啓。
注意:數據庫打開之後必須關閉。
執行數據庫的更新操作
對數據庫進行操作時,要用到Statement接口完成,此接口可以使用Connection接口中提供的createStatement()方法實例化。
下面使用Statement接口分別完成數據庫的插入、修改、刪除操作。
實例一 執行數據庫插入操作
下面直接向user表中增加一條新的記錄,編寫一條完整的SQL語句,並通過Statement執行。
例:插入數據
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class InsertDemo {
//定義MySQL的數據庫驅動程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
//定義MySQL數據庫的連接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
//MySQL數據庫的連接用戶名
public static final String DBUSER = "root" ;
//MySQL數據庫的連接密碼
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[])throws Exception{
Connection conn = null ; //數據庫連接
Statement stmt = null ; //數據庫操作
String sql = "INSERT INTO user(name,password,age,sex,birthday) "
+ " VALUES ('李華','www.baidu.cn',30,'男','2020-1-23')";
Class.forName(DBDRIVER) ; //加載驅動程序
//連接MySQL數據庫時,要寫上連接的用戶名和密碼
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
stmt = conn.createStatement() ; //實例化Statement對象
stmt.executeUpdate(sql) ; //執行數據庫更新操作
stmt.close() ; //操作關閉
conn.close() ; //數據庫關閉
}
}
提示:在數據庫中更新操作結束後,用SELECT * FROM user ;來查看是否已做修改。
重要:在程序中的SQL語句中的數據是固定的,如果將全部的內容換成變量,則可以按照以下的代碼編寫:
Statement stmt = null ; //數據庫操作
String name = "李敏" ; //姓名
String password = "www.baidu.cn" ; //密碼
int age = 23 ; //年齡
String sex = "女" ; //性別
String birthday = "2003-08-23" ; //生日
String sql = " INSERT INTO user(name,password,age,sex,birthday) "
+ " VALUES ('" + name + "','" + password + "'," + age + ",'" + sex + "','" + birthday + "') "; //拼湊出一個完整的SQL語句
實例二 執行數據庫修改
修改語句 --> UPDATE
例:數據庫修改操作
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class UpdateDemo {
//定義MySQL的數據庫驅動程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
//定義MySQL數據庫的連接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
//MySQL數據庫的連接用戶名
public static final String DBUSER = "root" ;
//MySQL數據庫的連接密碼
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[])throws Exception{
Connection conn = null ; //數據庫連接
Statement stmt = null ; //數據庫操作
int id = 3 ; //id
String name = "李洛克" ; //姓名
String password = "www.mldn.cn" ; //密碼
int age = 23 ; //年齡
String sex = "男" ; //性別
String birthday = "2001-08-23" ;//生日
String sql = " UPDATE user SET name='"+ name + "',password='" + password
+ "',age=" + age + ",sex='"+ sex + "',birthday='"
+ birthday+ "' WHERE id=" + id ;//拼湊出一個完整的SQL語句
Class.forName(DBDRIVER) ; //加載驅動程序
//連接MySQL數據庫時,要寫上連接的用戶名和密碼
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
stmt = conn.createStatement() ; //實例化Statement對象
stmt.executeUpdate(sql) ; //執行數據庫更新操作
stmt.close() ; //操作關閉
conn.close() ; //數據庫關閉
}
}
實例三 執行數據庫刪除操作
例:按id刪除一條記錄
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class DeleteDemo {
//定義MySQL的數據庫驅動程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
//定義MySQL數據庫的連接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
//MySQL數據庫的連接用戶名
public static final String DBUSER = "root" ;
//MySQL數據庫的連接密碼
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[])throws Exception{
Connection conn = null ; //數據庫連接
Statement stmt = null ; //數據庫操作
int id = 3 ; //id
String sql = "DELETE FROM user WHERE id=" + id;//拼湊出一個完整的SQL語句
Class.forName(DBDRIVER) ; //加載驅動程序
//連接MySQL數據庫時,要寫上連接的用戶名和密碼
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
stmt = conn.createStatement() ; //實例化Statement對象
stmt.executeUpdate(sql) ; //執行數據庫更新操作
stmt.close() ; //操作關閉
conn.close() ; //數據庫關閉
}
}