對(duì)于應(yīng)用而言,沒有數(shù)據(jù)庫的支持意味著該應(yīng)用只能服務(wù)小部分人,只能存儲(chǔ)小部分?jǐn)?shù)據(jù),而且數(shù)據(jù)不好進(jìn)行管理,所以大多數(shù)編程語言能連接數(shù)據(jù)庫以獲得數(shù)據(jù)支持。那么 java 怎么連接數(shù)據(jù)庫呢?讓小編來告訴你。
閱前須知
java 項(xiàng)目要連接數(shù)據(jù)需要有相應(yīng)的驅(qū)動(dòng)??梢郧巴倬W(wǎng)下載相應(yīng)的驅(qū)動(dòng)包
官網(wǎng)鏈接:https://dev.mysql.com/downloads/connector/j/
如果使用 maven 項(xiàng)目,可以在 pom 文件中添加如下依賴:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
注:小編使用的是8.0.25版本的數(shù)據(jù)庫,所以版本號(hào)是8.0.25,不同版本請(qǐng)自行修改。
連接數(shù)據(jù)庫與基本操作(代碼附帶注釋):
import java.sql.*;//導(dǎo)入sql包才能進(jìn)行jdbc操作
public class App {
public static void main(String[] args){
String url ="jdbc:mysql://127.0.0.1:3306/";//數(shù)據(jù)庫主機(jī)地址
String database ="w3c";//數(shù)據(jù)庫名
String encoding = "?characterEncoding=UTF-8";//數(shù)據(jù)庫字符集
String username = "root";//連接的用戶名
String password = "root";//連接的密碼
String insertSQL = " insert into newtable values (8,'username','123'); ";//插入SQL語句
String selectSQL = "select * from newtable";//查詢SQL語句
Connection connection = null; //初始化數(shù)據(jù)庫連接
Statement statement = null; //初始化statement
try {
connection= DriverManager.getConnection(url+database+encoding,
username, password);//創(chuàng)建一個(gè)數(shù)據(jù)庫連接
statement= connection.createStatement();//創(chuàng)建一個(gè)statement
//statement是java執(zhí)行數(shù)據(jù)庫操作的重要接口,用來執(zhí)行簡單的sql語句
// 注意:使用的是 java.sql.Statement,不要不小心使用到: com.mysql.jdbc.Statement;
statement.execute(insertSQL);//使用excute()方法可以執(zhí)行創(chuàng)建,增加,刪除,插入等SQL語句
ResultSet result = statement.executeQuery(selectSQL);//使用excuteQuery()可以執(zhí)行查詢語句,并將結(jié)果集返回給ResultSet
//數(shù)據(jù)展示方法,不深入介紹
while(result.next()){//使用next方法可以一行一行的取數(shù)據(jù),如果要全部取出,可以先存在一個(gè)數(shù)組里
int id=result.getInt(1);//獲取第一列的數(shù)據(jù)
String user=result.getString(2);//獲取第二列的數(shù)據(jù)
String pwd=result.getString(3);//獲取第三列的數(shù)據(jù)
System.out.println("編號(hào):"+id+",用戶名:"+user+",密碼:"+pwd);
System.out.println("-----------------------");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
// 數(shù)據(jù)庫的連接時(shí)有限資源,相關(guān)操作結(jié)束后,養(yǎng)成關(guān)閉數(shù)據(jù)庫的好習(xí)慣
// 先關(guān)閉Statement
if (statement != null)
try {
statement.close();//關(guān)閉statement
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 后關(guān)閉Connection
if (connection != null)
try {
connection.close();//關(guān)閉數(shù)據(jù)庫連接
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
小結(jié)
java 數(shù)據(jù)庫的連接相比于 python 而言復(fù)雜了許多。好在 java 有比較成熟的數(shù)據(jù)庫框架可以使用,在項(xiàng)目的開發(fā)中編寫 jdbc 的機(jī)會(huì)較少。有興趣深入了解的小伙伴可以去看看: