當前位置:首頁 » 操作系統 » sqlite讀取資料庫

sqlite讀取資料庫

發布時間: 2022-11-26 06:03:39

Ⅰ 怎樣在Qt下連接讀寫sqlite資料庫

這里以學生信息的錄入與讀取來作為演示,主要目的是演示資料庫的操作,至於數據的顯示等不在演示範圍內,請您自行研究。
首先,在Qt中建立一個圖形界面的程序項目。

然後,我們在命令行下用sqlite命令創建了資料庫 C:\StudentInfo\sutdentdata.db,並且建立了一個資料庫表student,該表有四個欄位ID、Name、Sex、Age,未向表中添加任何數據。
關於sqlite的簡單使用,可以參考我們的另一篇經驗。
2SQLite的簡單使用方法

在讀寫SQLite資料庫中,我們最主要用到的是QSqlDatabase類及QSqlQuery類,前者負責創建資料庫連接並打開資料庫,後者負責執行查詢操作。實際上前者也可以進行查詢操作並將結果返回給QSqlQuery對象,但是Qt並不建議這么做。
在幹活前,依然是先看看Assitant,這是培養獨立解決問題的一個好習慣。

好,下面給 錄入 按鈕的點擊事件編寫代碼。關於如何給按鈕的某一事件進行編碼,可以參考我們另一篇經驗。
首先在.pro文件中加上sql,然後別忘了#include <QSqlDatabase>以及#include <QSqlQuery>。
好了,下面在錄入按鈕的槽中加入如下代碼:
QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","wconntosqlite");
mydb.setDatabaseName("c:\\StudentInfo\\studentdata.db");
if(mydb.open())
{
QSqlQuery query(mydb);
QString sqlstr="insert into student (ID,Name,Sex,Age) values ('"
+ui->le_id->text()+"','"
+ui->le_name->text()+"','"
+ui->le_sex->text()+"',"
+ui->le_age->text()+")";
bool isok=query.exec(sqlstr);
if(isok)
qDebug()<<"數據寫入成功";
}
上面我們先調用了QSqlDatabase的靜態函數addDatabase創建了一個名為wconntosqlite的連接。然後給其傳遞資料庫名稱。
如果資料庫打開成功,就創建一個關聯的QSqlQuery對象,最後由QSqlQuery來執行插入數據工作。
特別注意:QSqlQuery對象的創建必須在mydb open成功以後才行,否則會出錯。
我們來看看效果如何。
4c++怎麼做界面

我們接著來寫查詢按鈕的代碼,輸入以下代碼:
QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","rconntosqlite");
mydb.setDatabaseName("c:\\StudentInfo\\studentdata.db");
if(mydb.open())
{
QSqlQuery query(mydb);
QString sqlstr="select * from student";
bool isok=query.exec(sqlstr);
if(isok)
qDebug()<<"數據讀取成功";

query.first();
QString result="學號:"+query.value(0).toString()+" "
+"姓名:"+query.value(1).toString()+" "
+"性別:"+query.value(2).toString()+" "
+"年齡:"+query.value(3).toString();
ui->lbl_query->setText(result);
}
與寫入數據基本差不多,這里需要特別注意的是query.first();。看看Assistant怎麼說的就知道了。原來,query對象在執行完查詢語句後,query的位置被置於一個不可用的位置,如果想從query中獲取數據,需要設置query到一個可用的記錄中才行。方法有好幾種,這里我們用了first()成員函數。
好,來看看運行結果。
可以看到軟體讀取的數據與控制台窗口的數據是一致的。

我們來總結下Qt操作SQLite資料庫的五步走法決:
第一步,建立一個連接:QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
第二步,關聯資料庫文件:db.setDatabaseName("這里你的資料庫文件路徑")
第三步,打開資料庫:db.open()
第四步,如果資料庫打開成功,就建立一個相關聯的QSqlQuery對象:QSqlQuery query(db)
第五步,執行SQL語句:query.exec("你的SQL語句字元串")

Ⅱ 安卓怎麼讀取sqlite資料庫

安裝SQLite Expert Professional 可以在網上下載,我下載的是試用版,沒有找注冊碼,但是試用不影響使用,反正用幾次查看到資料庫操作沒有錯誤就不用這個工具了。當然也可以使用Eclipse插件DDMS來查看,也可以使用Android工具包中的adb工具來查看。android項目中的sqlite資料庫位於/data/data/項目包/databases中。先介紹使用DDMS導出sqlite資料庫的操作和使用adb工具訪問sqlite資料庫。
首先打開android項目的調試模式,然後找到顯示DDMS

切換到DDMS,顯示File Explorer窗口,找到/data/data/ 如下圖1 ,
然後找到程序包的文件夾,打開databases,就能看到sqlite資料庫文件了。選擇將其導出。如下圖2.
這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如SQLite Expert Professional可以打開該資料庫了。其他 sqlite界面管理工具如sqlite administrator、sqlite man或者firefox插件sqlite manager也可以打開該資料庫。

使用adb工具訪問sqlite資料庫
Android Debug Bridge(ADB)是Android的一個通用調試工具,它可以更新設備或模擬器中的代碼,可以管理預定埠,可以在設備上運行shell命令,我們 知道android是基於linux內核,它的內部文件結構也是採用linux文件組織方式,因此訪問它的文件結構需要使用shell。這次我們就會用 shell來訪問android應用中的sqlite資料庫文件。
1、運行cmd,切換到android-sdk目錄,運行adb.exe,加上參數shell,出現#號就代表進入了shell命令模式,注意adb要在Android模擬器運行時才能進入shell:如下圖

進入資料庫所在目錄:
shell命令記住兩個基本命令ls和cd,類似windows命令提示行中的dir和cd,代表列出當前目錄下文件列表和進入到指定目錄。了解這兩個命令之後,就可以找到data/data/項目包名/databases 如下圖1, 找到資料庫文件如下圖2。

使用sqlite管理工具來進行資料庫操作
鍵入sqlite3 資料庫名就進入了sqlite管理模式了。
如下圖

設置sqlite環境變數:
在android的sdk中自帶了sqlite3.exe,這是sqlite的官方管理工具,它是一個命令行工具。為了使用方便,將其路徑注冊到系 統環境變數path中,即將;%Android_Home%加在Path中,這樣只樣運行sqlite3,就能直接打開sqlite管理工具了。
如下圖:

8
使用sqlite管理資料庫:
sqlite命令行工具默認是以;結束語句的。所以如果只是一行語句,要在末尾加;,或者在下一行中鍵入;,這樣sqlite命令才會被執行。
sqlite常用命令:
.tables--查看資料庫的表列表
.exit--退出sqlite命令行
其他命令可隨時.help查看幫助。sql命令可直接在此命令行上執行即可:

Ⅲ 如何通過命令行窗口查看sqlite資料庫文件

1、找到AndroidSDK目錄下的platform-tools文件夾,會發現該目錄下有一個adb.exe文件。到系統環境變數出去設置Path的值,將 adb.exe 所在的路徑加進去。

2、在命令行窗口輸入:" adb shell " 進入控制台

3、輸入 " cd /data/data/包名.項目名稱(小寫)/databases/ " (如: cd /data/data/com.keqi.test/databases/)進入項目文件所在的存儲路徑

4、可通過" ls "命令去查看該目錄下的文件

5、輸入" sqlite3 + 資料庫名.db " (如: " sqlite3 BookStore.db ") 打開資料庫

6、可輸入 " .table " 查看資料庫中存在哪些表

7、可輸入" .schema ' 查看建表語句

8、通過SQL查詢語句 " select * from 表名 " (如:" select * from Book ")

Ⅳ android sqlite怎麼讀取資料庫

第一步先判斷在指定的路勁是否存在,不存在就創建。第二步將android的資源下的資料庫復制到指定路徑下面。第三步就是根據指定路徑打開或者創建資料庫,然後得到操作資料庫的對象,得到操作資料庫的對象了,自然就可以對資料庫中的表進行增刪改查等操作了。

[java] view plain print?
<span style="font-size:12px;">SQLiteDatabase db;
private final String DATABASE_PATH = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath() + "/vote";
private String DATABASE_FILENAME = "db_vote.db";

// 初始化資料庫
private SQLiteDatabase openDatabase() {
try {
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
if (!dir.exists())
dir.mkdir();
if (!(new File(databaseFilename)).exists()) {
InputStream is = getResources().openRawResource(R.raw.db_vote);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
db = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);
return db;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}</span>
方法二:
1. 准備SQLite database文件

假設你已經創建了一個sqlite資料庫,我們需要對其進行一些修改。
(譯者註:這里原文是推薦了一個SQLite資料庫管理軟體,這個我覺得可以隨自己的喜好,最Windows下面有多款可視化的SQlite資料庫管理軟體,可以方便的讀取,編輯資料庫,例如我用的是sqlitestudio
打開資料庫,添加一個新的table 「android_metadata",插入一行數據,具體的SQL如下:

Ⅳ 如何讀取android asserts下面已經存在的sqlite資料庫

這個可以在每次應用開啟時檢測database文件夾下是否有這個名稱的資料庫,如果沒有就從asserts中獲得釋放一次,給你看一下我的代碼:

我的asserts里有一個文件叫做:address.db

/**
*在onCreate()方法中調用
*/
privateFileinitDatabase(){
BufferedInputStreambis=null;
BufferedOutputStreambos=null;
Filefile=getDatabasePath("address.db");
byte[]buffer=newbyte[1024];
intc;

try{
if(!file.exists())
file.getParentFile().mkdirs();
else
returnfile;
bis=newBufferedInputStream(getAssets().open("address.db"));
bos=newBufferedOutputStream(newFileOutputStream(file));

while((c=bis.read(buffer))!=-1)
bos.write(buffer,0,c);

}catch(IOExceptione){
e.printStackTrace();
returnnull;
}finally{
try{
if(bis!=null)
bis.close();
if(bos!=null){
bos.close();
bos.flush();
}
}catch(IOExceptione){
e.printStackTrace();
}
}
returnfile;
}

Ⅵ VC 讀取SQLite資料庫中的表的數據,該怎麼解決

1、使用insert方法插入記錄
sqlitedatabase的insert方法的簽名為long
insert(string
table,string
nullcolumnhack,contentvalues
values),這個插入方法的參數說明如下:
table:代表想插入數據的表名。
nullcolumnhack:代表強行插入null值的數據列的列名。
values:代表一行記錄的數據。
insert方法插入的一行記錄使用contentvalues存放,contentvalues類似於map,它提供了put(string
key,xxx
value)(其中key為數據列的列名)方法用於存入數據、getasxxx(string
key)方法用於取出數據。
例如如下語句:
contentvalues
values=new
contentvalues();
values.put("name","孫悟空"):
values.put("age",500);
//返回新添記錄的行號,該行號是一個內部直,與主鍵id無關,發生錯誤返回-1
long
rowid=db.insert("person_inf",null,values);
2、使用update方法更新數據
sqlitedatabase的update方法簽名為update(string
table,contentvalues
values,string
whereclause,string[]
whereargs),這個更新方法的參數說明如下:
table:代表想要更新數據的表名。
values:代表想要更新的數據。
whereclause:滿足該whereclause子句的記錄將會被更新。
whereargs:用於為whereargs子句傳遞參數。
例如我們想要更新person_inf表中所有主鍵大於20的人的人名,可調用如下方法:
contentvalues
values=new
contentvalues();
//存放更新後的人名
values.put("name","新人名");
int
result=db.update("person_inf",values,"_id>?",new
integer[]{20});
3、使用delete方法刪除記錄
sqlitedatabase的delete方法簽名為delete(string
table,string
whereclause,string[]
whereargs),這個刪除的參數說明如下:
table:代表想刪除數據的表名。
whereclause:滿足該whereclause子句的記錄將會被刪除。
whereargs:用於為whereargs子句傳入參數。
刪除person_inf表中所有人名以孫開頭的記錄
int
result=db.delete("person_inf","person_name
like
?",new
string[]{"孫_"});
4、使用query方法查詢記錄
sqlitedatabase的query方法簽名為cursor
query(boolean
distinct,string
table,string[]
columns,string
selection,string[]
selectionargs,string
groupby,string
having,string
orderby,string
limit),這個query方法的參數說明如下。
distinct:指定是否去除重復記錄。
table:執行查詢數據的表名。
columns:要查詢出來的列名。
selection:查詢條件子句。
selectionargs:用於為selection子句中佔位符傳入參數值,值在數組中的位置與佔位符在語句中的位置必須一致,否則就會有異常。
groupby:用於控制分組。
having:用於對分組進行過濾。
orderby:用於對記錄進行排序。
limit:用於進行分頁。
例如查詢出person_inf表中人名以孫開頭的數據
cursor
cursor=db.query("person_inf",new
string[]{"_id,name,age"},"name
like
?",new
string
[]{"孫%"},null,null,"personid
desc","5,10");
cursor.close();

Ⅶ c# sqlite 讀取資料庫 多線程 高頻率 錯誤

privatevoidbutton1_Click(objectsender,EventArgse)
{
try
{
//禁用按鈕
this.button1.Enabled=false;
//這里開始耗時工作
}
catch(Exception)
{
}
finally
{
//啟用按鈕
this.button1.Enabled=true;
}
}

Ⅷ 讀取sqlite資料庫時用SQLiteDataAdapter填充Datatable時遇到的問題。

那你查一下DateTime的欄位是否為空值,如果為空值那麼在填充到DataTable時得設置一個默認值,否則就會出現你所說的錯誤。
另外,如果你在讀取DateTime欄位時是使用dr.GetDateTime(1)這種方式讀取的,那麼得確保DateTime欄位不為空值,否則讀取時也會出現你所說的錯誤

熱點內容
g92編程 發布:2025-05-17 21:00:31 瀏覽:170
匯編語言第三版腳本之家 發布:2025-05-17 20:54:26 瀏覽:399
資源配置最佳狀態叫什麼 發布:2025-05-17 20:48:58 瀏覽:84
定義dns伺服器的ip 發布:2025-05-17 20:32:37 瀏覽:954
android判斷圖片 發布:2025-05-17 20:32:33 瀏覽:833
安卓12什麼時候適配小米 發布:2025-05-17 20:31:47 瀏覽:71
c語言字元串初始化 發布:2025-05-17 20:18:43 瀏覽:37
安卓融e聯推送需要什麼許可權 發布:2025-05-17 20:18:39 瀏覽:269
我的世界無限武魂伺服器 發布:2025-05-17 20:17:09 瀏覽:372
安卓手游腳本語言 發布:2025-05-17 19:53:07 瀏覽:22