對(duì)于應(yīng)用而言,沒(méi)有數(shù)據(jù)庫(kù)的支持意味著該應(yīng)用只能服務(wù)小部分人,只能存儲(chǔ)小部分?jǐn)?shù)據(jù),而且數(shù)據(jù)不好進(jìn)行管理,所以大多數(shù)編程語(yǔ)言能連接數(shù)據(jù)庫(kù)以獲得數(shù)據(jù)支持。那么 java 怎么連接數(shù)據(jù)庫(kù)呢?讓小編來(lái)告訴你。
閱前須知
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 文件中添加如下依賴(lài):
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
注:小編使用的是8.0.25版本的數(shù)據(jù)庫(kù),所以版本號(hào)是8.0.25,不同版本請(qǐng)自行修改。
連接數(shù)據(jù)庫(kù)與基本操作(代碼附帶注釋?zhuān)?/b>
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ù)庫(kù)主機(jī)地址
String database ="w3c";//數(shù)據(jù)庫(kù)名
String encoding = "?characterEncoding=UTF-8";//數(shù)據(jù)庫(kù)字符集
String username = "root";//連接的用戶(hù)名
String password = "root";//連接的密碼
String insertSQL = " insert into newtable values (8,'username','123'); ";//插入SQL語(yǔ)句
String selectSQL = "select * from newtable";//查詢(xún)SQL語(yǔ)句
Connection connection = null; //初始化數(shù)據(jù)庫(kù)連接
Statement statement = null; //初始化statement
try {
connection= DriverManager.getConnection(url+database+encoding,
username, password);//創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接
statement= connection.createStatement();//創(chuàng)建一個(gè)statement
//statement是java執(zhí)行數(shù)據(jù)庫(kù)操作的重要接口,用來(lái)執(zhí)行簡(jiǎn)單的sql語(yǔ)句
// 注意:使用的是 java.sql.Statement,不要不小心使用到: com.mysql.jdbc.Statement;
statement.execute(insertSQL);//使用excute()方法可以執(zhí)行創(chuàng)建,增加,刪除,插入等SQL語(yǔ)句
ResultSet result = statement.executeQuery(selectSQL);//使用excuteQuery()可以執(zhí)行查詢(xún)語(yǔ)句,并將結(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+",用戶(hù)名:"+user+",密碼:"+pwd);
System.out.println("-----------------------");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
// 數(shù)據(jù)庫(kù)的連接時(shí)有限資源,相關(guān)操作結(jié)束后,養(yǎng)成關(guān)閉數(shù)據(jù)庫(kù)的好習(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ù)庫(kù)連接
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
小結(jié)
java 數(shù)據(jù)庫(kù)的連接相比于 python 而言復(fù)雜了許多。好在 java 有比較成熟的數(shù)據(jù)庫(kù)框架可以使用,在項(xiàng)目的開(kāi)發(fā)中編寫(xiě) jdbc 的機(jī)會(huì)較少。有興趣深入了解的小伙伴可以去看看: