0、目錄
1、JDBC
JDBC (Java DataBase Connection) 是通過JAVA訪問數據庫
所以需要對數據庫有基本的理解和應用
2、爲項目導入mysql-jdbc的jar包
訪問MySQL數據庫需要用到第三方的類,這些第三方的類,都被壓縮在一個叫做Jar的文件裏。
爲了代碼能夠使用第三方的類,需要爲項目導入mysql的專用Jar包。
該包mysql-connector-java-5.0.8-bin.jar可以在右邊下載
通常都會把項目用到的jar包統一放在項目的lib目錄下,在本例就會放在
E:\project\j2se\lib 這個位置
然後在eclipse中導入這個jar包
導包步驟: 右鍵project->property->java build path->libaries->add external jars
3、初始化驅動
通過Class.forName(“com.mysql.jdbc.Driver”);
初始化驅動類com.mysql.jdbc.Driver
就在 mysql-connector-java-5.0.8-bin.jar中
如果忘記了第一個步驟的導包,就會拋出ClassNotFoundException
Class.forName是把這個類加載到JVM中,加載的時候,就會執行其中的靜態初始化塊,完成驅動的初始化的相關工作。
package jdbc;
public class TestJDBC {
public static void main(String[] args) {
//初始化驅動
try {
//驅動類com.mysql.jdbc.Driver
//就在 mysql-connector-java-5.0.8-bin.jar中
//如果忘記了第一個步驟的導包,就會拋出ClassNotFoundException
Class.forName("com.mysql.jdbc.Driver");
System.out.println("數據庫驅動加載成功 !");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4、建立與數據庫的連接
建立與數據庫的Connection連接
這裏需要提供:
數據庫所處於的ip:127.0.0.1 (本機)
數據庫的端口號: 3306 (mysql專用端口號)
數據庫名稱 how2java
編碼方式 UTF-8
賬號 root
密碼 admin
注: 這一步要成功執行,必須建立在mysql中有數據庫how2java的基礎上,如果沒有,點擊創建數據庫查看如何進行數據庫的創建。
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestJDBC {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
// 建立與數據庫的Connection連接
// 這裏需要提供:
// 數據庫所處於的ip:127.0.0.1 (本機)
// 數據庫的端口號: 3306 (mysql專用端口號)
// 數據庫名稱 how2java
// 編碼方式 UTF-8
// 賬號 root
// 密碼 admin
Connection c = DriverManager
.getConnection(
"jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
"root", "admin");
System.out.println("連接成功,獲取連接對象: " + c);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
5、創建Statement
Statement是用於執行SQL語句的,比如增加,刪除
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TestJDBC {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager
.getConnection(
"jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
"root", "admin");
// 注意:使用的是 java.sql.Statement
// 不要不小心使用到: com.mysql.jdbc.Statement;
Statement s = c.createStatement();
System.out.println("獲取 Statement對象: " + s);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
6、執行SQL語句
s.execute執行sql語句
執行成功後,用mysql-front進行查看,明確插入成功
執行SQL語句之前要確保數據庫how2java中有表hero的存在,如果沒有,需要事先創建表
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TestJDBC {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager
.getConnection(
"jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
"root", "admin");
Statement s = c.createStatement();
// 準備sql語句
// 注意: 字符串要用單引號'
String sql = "insert into hero values(null,"+"'提莫'"+","+313.0f+","+50+")";
s.execute(sql);
System.out.println("執行插入語句成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
7、關閉連接
數據庫的連接是有限資源,相關操作結束後,養成關閉數據庫的好習慣
先關閉Statement
後關閉Connection
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TestJDBC {
public static void main(String[] args) {
Connection c = null;
Statement s = null;
try {
Class.forName("com.mysql.jdbc.Driver");
c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8", "root",
"admin");
s = c.createStatement();
String sql = "insert into hero values(null," + "'提莫'" + "," + 313.0f + "," + 50 + ")";
s.execute(sql);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 數據庫的連接時有限資源,相關操作結束後,養成關閉數據庫的好習慣
// 先關閉Statement
if (s != null)
try {
s.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 後關閉Connection
if (c != null)
try {
c.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
8、使用try-with-resource的方式自動關閉連接
如果覺得上一步的關閉連接的方式很麻煩,可以參考關閉流 的方式,使用try-with-resource的方式自動關閉連接,因爲Connection和Statement都實現了AutoCloseable接口
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class TestJDBC {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try (
Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
"root", "admin");
Statement s = c.createStatement();
)
{
String sql = "insert into hero values(null," + "'提莫'" + "," + 313.0f + "," + 50 + ")";
s.execute(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}