一、前言
現今,各個(gè)領(lǐng)域的應用程序都需要與數據庫進(jìn)行通信。當我們在使用app時(shí),如何與數據庫進(jìn)行通信呢?本篇文章將為您詳細介紹。
二、App和數據庫間的通信
1. 數據庫的搭建
在開(kāi)始應用程序和數據庫間的通信之前,我們需要先搭建好一個(gè)數據庫。華為云提供了多種數據庫解決方案,如云數據庫RDS、PolarDB等。這里我們以華為云云服務(wù)器上自建數據庫為例進(jìn)行講解。
首先,登錄你的華為云賬戶(hù),在云服務(wù)器界面選擇新建主機。接著(zhù),選擇系統盤(pán)、數據盤(pán)及規格,最后選擇所需的地域即可創(chuàng )建成功。
創(chuàng )建完成后,我們可以在終端中使用如下命令安裝MySQL:
```
sudo apt-get install mysql-server
```
2. 數據庫的配置
安裝完成后,我們需要對數據庫進(jìn)行配置。輸入如下命令進(jìn)入MySQL的設置:
```
sudo mysql_secure_installation
```
按照提示進(jìn)行設置即可。成功后,輸入如下命令登陸MySQL:
```
mysql -u root -p
```
3. 數據庫的操作
成功登陸后,我們便可以對數據庫進(jìn)行操作了。例如,創(chuàng )建一個(gè)名為mydatabase的數據庫:
```
CREATE DATABASE mydatabase;
```
接著(zhù),選擇該數據庫:
```
USE mydatabase;
```
在該數據庫中創(chuàng )建一個(gè)名為mytable的表:
```
CREATE TABLE mytable (
id INT(6) UNSIGNED AUTO_INCREMENT prIMARY KEY,
name VARCHAR(30) NOT NULL,
age INT(3) NOT NULL
);
```
接下來(lái),我們可以插入若干條數據:
```
INSERT INTO mytable (name, age)
VALUES ('Tom', '18'),
('Jerry', '21'),
('Marry', '22');
```
4. 編寫(xiě) App 代碼
在數據庫操作完成后,我們便可以編寫(xiě)App代碼進(jìn)行與數據庫的通信了。這里我以AndROId為例進(jìn)行說(shuō)明。
a. 引入 MySQL 驅動(dòng)
首先,在app/build.gradle文件中添加如下代碼:
```
dependencies {
implementation 'mysql:mysql-connector-java:8.0.23'
}
```
b. 實(shí)現數據庫鏈接
接著(zhù),在MainActivity.java文件中實(shí)現與數據庫的鏈接:
```
public class MainActivity extends AppCompatActivity {
private static final String DB_URL = "jdbc:mysql://[數據庫地址]:[端口號]/mydatabase?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
private static final String USER = "[用戶(hù)名]";
private static final String PASS = "[密碼]";
private Connection conn = null;
private Statement st = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
st = conn.createStatement();
} catch (ClassNotFoundException e) {
Log.d("Database", "Driver not found." + e.getMessage());
} catch (SQLException e) {
Log.d("Database", "Connection error." + e.getMessage());
}
if (st != null) {
try {
ResultSet rs = st.executeQuery("SELECT * FROM mytable");
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
Log.d("Database", "name = " + name + ", age = " + age);
}
rs.close();
st.close();
conn.close();
} catch (SQLException e) {
Log.d("Database", "SQL error." + e.getMessage());
}
}
}
}).start();
}
}
```
在這里,我們通過(guò)JDBC驅動(dòng)來(lái)實(shí)現了與數據庫的鏈接,并查詢(xún)了名為mytable表中的數據。
三、總結
通過(guò)上述步驟,我們便可以進(jìn)行App和數據庫間的通信了。而在華為云的支持下,我們可以更加輕松地搭建、配置和管理數據庫。同時(shí),華為云的服務(wù)器產(chǎn)品也為我們提供了高效、安全和可靠的運行環(huán)境,使得我們能夠更加專(zhuān)注地進(jìn)行應用開(kāi)發(fā)。