新聞中心
在應(yīng)用程序開發(fā)中,存儲數(shù)據(jù)是最基本的需求之一。為了記錄應(yīng)用程序中的數(shù)據(jù),Android應(yīng)用程序常常使用SQLite數(shù)據(jù)庫。SQLite是一種開源的輕量級數(shù)據(jù)庫,適用于小型移動設(shè)備的存儲需求。Android提供了內(nèi)置的API來訪問SQLite數(shù)據(jù)庫,并且它的使用非常方便。

本文將介紹SQLite數(shù)據(jù)庫的基礎(chǔ)知識,以及如何在Android應(yīng)用程序中使用SQLite,在數(shù)據(jù)庫中插入數(shù)據(jù),以及如何使用Java編程語言來編寫一個簡單的應(yīng)用程序。
SQLite數(shù)據(jù)庫
SQLite數(shù)據(jù)庫是指一個自包含的、零配置、無服務(wù)器的、事務(wù)性的SQL數(shù)據(jù)庫引擎。它是一種嵌入式數(shù)據(jù)庫,不需要單獨的服務(wù)器進程或配置文件。SQLite數(shù)據(jù)庫實現(xiàn)了大部分的SQL92標準,支持事務(wù)、觸發(fā)器、游標等高級技術(shù)。
SQLite作為一種輕量級的數(shù)據(jù)庫引擎,適用于小型的應(yīng)用程序,尤其是嵌入設(shè)備和嵌入式系統(tǒng)中。它因為其高效性、可移植性和可靠性而備受開發(fā)者推崇。
在Android中使用SQLite
在Android中,可以使用Android提供的API來訪問SQLite數(shù)據(jù)庫。訪問SQLite的API包含在Android SDK中,可通過得到Android SDK Manager來下載。
要使用SQLite數(shù)據(jù)庫,應(yīng)首先創(chuàng)建一個表。語法如下:
CREATE TABLE 表名 (
列名1 數(shù)據(jù)類型1,
列名2 數(shù)據(jù)類型2,
…
);
例如,可以創(chuàng)建一個保存學生信息的表,語法如下:
CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);
在這個例子中,students是表名,id、name和age是列名,分別表示學生的id、姓名和年齡。id列標記為PRIMARY KEY,表明它是主鍵列。
插入數(shù)據(jù)
插入數(shù)據(jù)是向數(shù)據(jù)庫中添加新數(shù)據(jù)的過程。在SQLite中,可以使用INSERT INTO語句插入數(shù)據(jù)。語法如下:
INSERT INTO 表名 (列1, 列2, 列3, …) VALUES (數(shù)據(jù)1, 數(shù)據(jù)2, 數(shù)據(jù)3, …);
例如,可以向students表中插入一條學生數(shù)據(jù),語法如下:
INSERT INTO students (name, age) VALUES (‘小明’, 18);
在這個例子中,只指定了name和age列,并設(shè)置它們的值為“小明”和18。
使用Java API插入數(shù)據(jù)
在Android應(yīng)用程序中,可以使用Java API訪問SQLite數(shù)據(jù)庫。以下是一個簡單的應(yīng)用程序示例,演示如何創(chuàng)建一個學生的應(yīng)用程序,并使用INSERT INTO語句來插入數(shù)據(jù)。
需要在build.gradle文件中添加以下依賴關(guān)系:
implementation ‘a(chǎn)ndroidx.sqlite:sqlite:2.1.0’
然后,在MnActivity.java文件中,可以添加以下代碼,以創(chuàng)建數(shù)據(jù)庫和表,并將數(shù)據(jù)插入表中:
public class MnActivity extends AppCompatActivity {
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mn);
// 創(chuàng)建數(shù)據(jù)庫和表
createDatabase();
// 插入數(shù)據(jù)
insertData(“小明”, 18);
}
private void createDatabase() {
String DATABASE_NAME = “students.db”;
db = openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE, null);
db.execSQL(“CREATE TABLE IF NOT EXISTS students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);”);
}
private void insertData(String name, int age) {
String sql = “INSERT INTO students (name, age) VALUES (?, ?);”;
db.execSQL(sql, new Object[]{name, age});
}
}
在這個示例中,createDatabase()方法用于創(chuàng)建數(shù)據(jù)庫和表,insertData()方法將一條學生信息插入到表中。
在這個應(yīng)用程序中,可以通過調(diào)用createDatabase()和insertData()方法來創(chuàng)建表和插入數(shù)據(jù)。在這種情況下,將插入一條包含學生姓名“小明”和18歲的年齡的數(shù)據(jù)。
使用SQLite數(shù)據(jù)庫,并向其中插入數(shù)據(jù),是Android應(yīng)用程序開發(fā)中最常見的需求之一。SQLite數(shù)據(jù)庫是一種輕量級的自包含數(shù)據(jù)庫引擎,適用于小型應(yīng)用程序。Android為SQLite提供了內(nèi)置的API,使得開發(fā)人員可以輕松地使用它來存儲和管理應(yīng)用程序中的數(shù)據(jù)。使用Java API執(zhí)行SQL語句是在Android應(yīng)用程序中使用SQLite的一個常見方法。此外,開發(fā)人員還可以使用各種插件和庫來簡化SQLite數(shù)據(jù)庫的使用。
相關(guān)問題拓展閱讀:
- android怎么鏈接數(shù)據(jù)庫mysql
- 安卓使用SQLiteDatabase.execSQL插入sqlite數(shù)據(jù)庫亂碼問題,急?。。?!
android怎么鏈接數(shù)據(jù)庫mysql
有點多請耐心看完。
希望能幫助你,還請及時采納謝謝。
一.前言
android連接數(shù)據(jù)庫的方式有兩種,之一種是通過連接服務(wù)器,再由服務(wù)器讀取數(shù)據(jù)彎胡庫來實現(xiàn)數(shù)據(jù)的增刪改查,這也是我們常用的方式。第二種方式是android直接埋如攔連接數(shù)據(jù)庫,這種方式非常耗手機內(nèi)存,而且容易被
反編譯
造成
安全隱患
,所以在實際項目中不推薦橡派使用。
二.準備工作
1.加載外部jar包
在Android工程中要使用jdbc的話,要導入jdbc的外部jar包,因為在Java的jdk中并沒有jdbc的api,我使用的jar包是mysql-connector-java-5.1.18-bin.jar包,網(wǎng)絡(luò)上有使用mysql-connector-java-5.1.18-bin.jar包的,自己去用的時候發(fā)現(xiàn)不兼容,所以下載了比較新版本的,jar包可以去官網(wǎng)下載,也可以去百度,有很多前人們上傳的。
2.導入jar包的方式
方式一:
可以在項目的build.gradle文件中直接添加如下語句導入
compile files(‘libs/mysql-connector-java-5.1.18-bin.jar’)
方式二:下載jar包復制到項目的libs目錄下,然后右鍵復制過來的jar包Add as libs
三.建立數(shù)據(jù)庫連接
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jdbc);
new Thread(runnable).start();
}
Handler myHandler=new Handler(){
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
Bundle data=new Bundle();
data=msg.getData();
//System.out.println(“id:”+data.get(“id”).toString()); //輸出第n行,列名為“id”的值
Log.e(“TAG”,”id:”+data.get(“id”).toString());
TextView tv= (TextView) findViewById(R.id.jdbc);
//System.out.println(“content:”+data.get(“content”).toString());
}
};
Runnable runnable=new Runnable() {
private Connection con = null;
@Override
public void run() {
// TODO Auto-generated method stub
try {
Class.forName(“com.mysql.jdbc.Driver”);
//引用代碼此處需要修改,address為數(shù)據(jù)IP,Port為
端口號
,DBName為數(shù)據(jù)名稱,UserName為數(shù)據(jù)庫登錄賬戶,Password為數(shù)據(jù)庫登錄密碼
con =
//DriverManager.getConnection(“jdbc: “root”, “”);
DriverManager.getConnection(“jdbc:
“,
UserName,Password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
testConnection(con); //測試數(shù)據(jù)庫連接
} catch (java.sql.SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testConnection(Connection con1) throws java.sql.SQLException {
try {
String sql = “select * from ecs_users”;//查詢表名為“oner_alarm”的所有內(nèi)容
Statement stmt = con1.createStatement();//創(chuàng)建Statement
ResultSet rs = stmt.executeQuery(sql);//ResultSet類似Cursor
//ResultSet最初指向之一行
Bundle bundle=new Bundle();
while (rs.next()) {
bundle.clear();
bundle.putString(“id”,rs.getString(“userid”));
//bundle.putString(“content”,rs.getString(“content”));
Message msg=new Message();
msg.setData(bundle);
myHandler.sendMessage(msg);
}
rs.close();
stmt.close();
} catch (SQLException e) {
} finally {
if (con1 != null)
try {
con1.close();
} catch (SQLException e) {}
}
}
};
注意:
在Android4.0之后,不允許在主
線程
中進行比較耗時的操作(連接數(shù)據(jù)庫就屬于比較耗時的操作),需要開一個新的線程來處理這種耗時的操作,沒新線程時,一直就是程序直接退出,開了一個新線程處理直接,就沒問題了。
當然,連接數(shù)據(jù)庫是需要網(wǎng)絡(luò)的,千萬別忘了添加訪問網(wǎng)絡(luò)權(quán)限:
四.bu
1.導入的jar包一定要正確
2.連接數(shù)據(jù)庫一定要開啟新線程
3.數(shù)據(jù)庫的IP一定要是可以ping通的,局域網(wǎng)地址手機是訪問不了的
4.數(shù)據(jù)庫所在的服務(wù)器是否開了防火墻,阻止了訪問
————————————————
版權(quán)聲明:本文為CSDN博主「shuaiyou_comon」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:
安卓使用SQLiteDatabase.execSQL插入sqlite數(shù)據(jù)庫亂碼問題,急?。。?!
這個我記得是因為查詢的時候的編碼問題,起始你插扮宏迅入的數(shù)據(jù)時對的。設(shè)置一下查詢數(shù)據(jù)庫所使用的編碼為UTF-8或者GBK再查看數(shù)廳此據(jù)絕殲是不是正常顯示。
你的代碼怎么寫的?
你的項目采用的什么編碼格式,改成utf-8 試試
命令行顯示亂碼還可能和控制臺設(shè)置有關(guān)
先看看代碼查詢數(shù)據(jù)后在調(diào)試狀態(tài)下是是否顯示為亂碼?
關(guān)于android sql插入數(shù)據(jù)庫的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
分享名稱:AndroidSQL插入數(shù)據(jù)庫:輕松記錄數(shù)據(jù)(androidsql插入數(shù)據(jù)庫)
本文網(wǎng)址:http://www.dlmjj.cn/article/dhegcie.html


咨詢
建站咨詢
