當前位置:首頁 » 操作系統 » sqlite資料庫增刪改查

sqlite資料庫增刪改查

發布時間: 2022-07-01 11:52:38

❶ android怎麼實現sqlite的增刪改查

SQL語句大全

--語 句 功 能
--數據操作
SELECT --從資料庫表中檢索數據行和列
INSERT --向資料庫表添加新數據行
DELETE --從資料庫表中刪除數據行
UPDATE --更新資料庫表中的數據
--數據定義
CREATE TABLE --創建一個資料庫表
DROP TABLE --從資料庫中刪除表
ALTER TABLE --修改資料庫表結構
CREATE VIEW --創建一個視圖
DROP VIEW --從資料庫中刪除視圖
CREATE INDEX --為資料庫表創建一個索引
DROP INDEX --從資料庫中刪除索引
CREATE PROCEDURE --創建一個存儲過程
DROP PROCEDURE --從資料庫中刪除存儲過程
CREATE TRIGGER --創建一個觸發器
DROP TRIGGER --從資料庫中刪除觸發器
CREATE SCHEMA --向資料庫添加一個新模式
DROP SCHEMA --從資料庫中刪除一個模式
CREATE DOMAIN --創建一個數據值域
ALTER DOMAIN --改變域定義
DROP DOMAIN --從資料庫中刪除一個域
--數據控制
GRANT --授予用戶訪問許可權
DENY --拒絕用戶訪問
REVOKE --解除用戶訪問許可權
--事務控制
COMMIT --結束當前事務
ROLLBACK --中止當前事務
SET TRANSACTION --定義當前事務數據訪問特徵
--程序化SQL
DECLARE --為查詢設定游標
EXPLAN --為查詢描述數據訪問計劃
OPEN --檢索查詢結果打開一個游標
FETCH --檢索一行查詢結果
CLOSE --關閉游標
PREPARE --為動態執行准備SQL 語句
EXECUTE --動態地執行SQL 語句
DESCRIBE --描述准備好的查詢
---局部變數
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'

---全局變數
---必須以@@開頭

--IF ELSE

❷ android開發中的SQLite資料庫的增刪改查功能怎麼實現

SQLite是一個輕量級的嵌入式資料庫引擎,它支持SQL語言,並且佔用很少的內存就可以有很好的性能。它與其他資料庫的最大的不同就是對數據類型的支持,創建一個表時,可以在CREATE

TABLE語句中指定某列的數據類型,但是可以把任何數據類型放入任何列中。當某個值插入資料庫時,SQLite將檢查它的數據類型。如果該類型和關聯的列不匹配,那麼SQLite會嘗試將該值轉換成該列的數據類型,如果不能轉換,那麼該值將作為其本身具有的數據類型存儲。對於Android平台來說,系統內置了豐富的API(SQLiteDatabase、SQLiteOpenHelper,Cursor等)來供我們操作SQLite。那麼接下來我將會結合我的代碼來講述我對Android資料庫的理解。

❸ swift裡面怎麼實現連接資料庫sqlite實現增刪改查

使用SQLiteDatabase操作SQLite資料庫
Android提供了一個名為SQLiteDatabase的類,該類封裝了一些操作資料庫的API,使用該類可以完成對數據進行添加(Create)、查詢(Retrieve)、更新(Update)和刪除(Delete)操作(這些操作簡稱為CRUD)。對SQLiteDatabase的學習,我們應該重點掌握execSQL()和rawQuery()方法。execSQL()方法可以執行insert、delete、update和CREATE TABLE之類有更改行為的SQL語句; rawQuery()方法用於執行select語句。
execSQL()方法的使用例子:
SQLiteDatabase db = ....;
db.execSQL("insert into person(name, age) values('1', 24)");
db.close();

執行上面SQL語句會往person表中添加進一條記錄,在實際應用中, 語句中的「林計欽」這些參數值會由用戶輸入界面提供,如果把用戶輸入的內容原樣組拼到上面的insert語句, 當用戶輸入的內容含有單引號時,組拼出來的SQL語句就會存在語法錯誤。要解決這個問題需要對單引號進行轉義,也就是把單引號轉換成兩個單引號。有些時候用戶往往還會輸入像「 & 」這些特殊SQL符號,為保證組拼好的SQL語句語法正確,必須對SQL語句中的這些特殊SQL符號都進行轉義,顯然,對每條SQL語句都做這樣的處理工作是比較煩瑣的。 SQLiteDatabase類提供了一個重載後的execSQL(String sql, Object[] bindArgs)方法,使用這個方法可以解決前面提到的問題,因為這個方法支持使用佔位符參數(?)。

❹ 在android中對資料庫做增刪改查有兩種方式分別是sqlitedatabase這個類中的哪幾個

一、使用嵌入式關系型SQLite資料庫存儲數據
在Android平台上,集成了一個嵌入式關系型資料庫——SQLite,SQLite3支持NULL、INTEGER、REAL(浮點數字)、 TEXT(字元串文本)和BLOB(二進制對象)數據類型,雖然它支持的類型只有五種,但實際上sqlite3也接受varchar(n)、 char(n)、decimal(p,s) 等數據類型,只不過在運算或保存時會轉成對應的五種數據類型。 SQLite最大的特點是你可以把各種類型的數據保存到任何欄位中,而不用關心欄位聲明的數據類型是什麼。例如:可以在Integer類型的欄位中存放字元串,或者在布爾型欄位中存放浮點數,或者在字元型欄位中存放日期型值。 但有一種情況例外:定義為INTEGER PRIMARY KEY的欄位只能存儲64位整數, 當向這種欄位保存除整數以外的數據時,將會產生錯誤。 另外,在編寫CREATE TABLE 語句時,你可以省略跟在欄位名稱後面的數據類型信息,如下面語句你可以省略name欄位的類型信息:
CREATE TABLE person (personid integer primary key autoincrement, name varchar(20))
SQLite可以解析大部分標准SQL語句,如:
復制代碼 代碼如下:

查詢語句:select * from 表名 where 條件子句 group by 分組字句 having ... order by 排序子句
如: select * from person
select * from person order by id desc
select name from person group by name having count(*)>1
分頁SQL與mysql類似,下面SQL語句獲取5條記錄,跳過前面3條記錄
select * from Account limit 5 offset 3 或者 select * from Account limit 3,5
插入語句:insert into 表名(欄位列表) values(值列表)。如: insert into person(name, age) values(『傳智',3)
更新語句:update 表名 set 欄位名=值 where 條件子句。如:update person set name=『傳智『 where id=10
刪除語句:delete from 表名 where 條件子句。如:delete from person where id=10

二、使用SQLiteOpenHelper對資料庫進行版本管理
我們在編寫資料庫應用軟體時,需要考慮這樣的問題:因為我們開發的軟體可能會安裝在很多用戶的手機上,如果應用使用到了SQLite資料庫,我們必須在用戶初次使用軟體時創建出應用使用到的資料庫表結構及添加一些初始化記錄,另外在軟體升級的時候,也需要對數據表結構進行更新。那麼,我們如何才能實現在用戶初次使用或升級軟體時自動在用戶的手機上創建出應用需要的資料庫表呢?總不能讓我們在每個需要安裝此軟體的手機上通過手工方式創建資料庫表吧?因為這種需求是每個資料庫應用都要面臨的,所以在Android系統,為我們提供了一個名為SQLiteOpenHelper的抽象類,必須繼承它才能使用,它是通過對資料庫版本進行管理來實現前面提出的需求。

為了實現對資料庫版本進行管理,SQLiteOpenHelper類提供了兩個重要的方法,分別是onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion),前者用於初次使用軟體時生成資料庫表,後者用於升級軟體時更新資料庫表結構。當調用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法獲取用於操作資料庫的SQLiteDatabase實例的時候,如果資料庫不存在,Android系統會自動生成一個資料庫,接著調用onCreate()方法,onCreate()方法在初次生成資料庫時才會被調用,在onCreate()方法里可以生成資料庫表結構及添加一些應用使用到的初始化數據。onUpgrade()方法在資料庫的版本發生變化時會被調用,一般在軟體升級時才需改變版本號,而資料庫的版本是由程序員控制的,假設資料庫現在的版本是1,由於業務的變更,修改了資料庫表結構,這時候就需要升級軟體,升級軟體時希望更新用戶手機里的資料庫表結構,為了實現這一目的,可以把原來的資料庫版本設置為2(有同學問設置為3行不行?當然可以,如果你願意,設置為100也行),並且在 onUpgrade()方法裡面實現表結構的更新。當軟體的版本升級次數比較多,這時在onUpgrade()方法裡面可以根據原版號和目標版本號進行判斷,然後作出相應的表結構及數據更新。

getWritableDatabase()和 getReadableDatabase()方法都可以獲取一個用於操作資料庫的SQLiteDatabase實例。但 getWritableDatabase() 方法以讀寫方式打開資料庫,一旦資料庫的磁碟空間滿了,資料庫就只能讀而不能寫,倘若使用getWritableDatabase()打開資料庫就會出錯。getReadableDatabase()方法先以讀寫方式打開資料庫,如果資料庫的磁碟空間滿了,就會打開失敗,當打開失敗後會繼續嘗試以只讀方式打開資料庫。
注意:getWritableDatabase(),getReadableDatabase的區別是當資料庫寫滿時,調用前者會報錯,調用後者不會,所以如果不是更新資料庫的話,最好調用後者來獲得資料庫連接。
代碼:
復制代碼 代碼如下:

public class DatabaseHelper extends SQLiteOpenHelper {
//類沒有實例化,是不能用作父類構造器的參數,必須聲明為靜態
private static final String name = "ljqdb"; //資料庫名稱
private static final int version = 1; //資料庫版本
public DatabaseHelper(Context context) {
//第三個參數CursorFactory指定在執行查詢時獲得一個游標實例的工廠類,設置為null,代表使用系統默認的工廠類
super(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS person (
personid integer primary key autoincrement, name varchar(20), age INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(" ALTER TABLE person ADD phone VARCHAR(12) NULL "); //往表中增加一列
// DROP TABLE IF EXISTS person 刪除表
}
}

在實際項目開發中,當資料庫表結構發生更新時,應該避免用戶存放於資料庫中的數據丟失。
三、使用SQLiteDatabase操作SQLite資料庫
Android提供了一個名為SQLiteDatabase的類,該類封裝了一些操作資料庫的API,使用該類可以完成對數據進行添加(Create)、查詢(Retrieve)、更新(Update)和刪除(Delete)操作(這些操作簡稱為CRUD)。對SQLiteDatabase的學習,我們應該重點掌握execSQL()和rawQuery()方法。execSQL()方法可以執行insert、delete、update和CREATE TABLE之類有更改行為的SQL語句; rawQuery()方法用於執行select語句。
execSQL()方法的使用例子:
復制代碼 代碼如下:

SQLiteDatabase db = ....;
db.execSQL("insert into person(name, age) values('林計欽', 24)");
db.close();

執行上面SQL語句會往person表中添加進一條記錄,在實際應用中, 語句中的「林計欽」這些參數值會由用戶輸入界面提供,如果把用戶輸入的內容原樣組拼到上面的insert語句, 當用戶輸入的內容含有單引號時,組拼出來的SQL語句就會存在語法錯誤。要解決這個問題需要對單引號進行轉義,也就是把單引號轉換成兩個單引號。有些時候用戶往往還會輸入像「 & 」這些特殊SQL符號,為保證組拼好的SQL語句語法正確,必須對SQL語句中的這些特殊SQL符號都進行轉義,顯然,對每條SQL語句都做這樣的處理工作是比較煩瑣的。 SQLiteDatabase類提供了一個重載後的execSQL(String sql, Object[] bindArgs)方法,使用這個方法可以解決前面提到的問題,因為這個方法支持使用佔位符參數(?)。使用例子如下:
復制代碼 代碼如下:

SQLiteDatabase db = ....;
db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"傳智播客", 4});
db.close();

execSQL(String sql, Object[] bindArgs)方法的第一個參數為SQL語句,第二個參數為SQL語句中佔位符參數的值,參數值在數組中的順序要和佔位符的位置對應。
SQLiteDatabase的rawQuery()用於執行select語句,使用例子如下:
復制代碼 代碼如下:

SQLiteDatabase db = ....;
Cursor cursor = db.rawQuery("select * from person", null);
while (cursor.moveToNext()) {
int personid = cursor.getInt(0); //獲取第一列的值,第一列的索引從0開始
String name = cursor.getString(1);//獲取第二列的值
int age = cursor.getInt(2);//獲取第三列的值
}
cursor.close();
db.close();

rawQuery()方法的第一個參數為select語句;第二個參數為select語句中佔位符參數的值,如果select語句沒有使用佔位符,該參數可以設置為null。帶佔位符參數的select語句使用例子如下:
復制代碼 代碼如下:

Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"%林計欽%", "4"});

Cursor是結果集游標,用於對結果集進行隨機訪問,如果大家熟悉jdbc, 其實Cursor與JDBC中的ResultSet作用很相似。使用moveToNext()方法可以將游標從當前行移動到下一行,如果已經移過了結果集的最後一行,返回結果為false,否則為true。另外Cursor 還有常用的moveToPrevious()方法(用於將游標從當前行移動到上一行,如果已經移過了結果集的第一行,返回值為false,否則為true )、moveToFirst()方法(用於將游標移動到結果集的第一行,如果結果集為空,返回值為false,否則為true )和moveToLast()方法(用於將游標移動到結果集的最後一行,如果結果集為空,返回值為false,否則為true ) 。

除了前面給大家介紹的execSQL()和rawQuery()方法, SQLiteDatabase還專門提供了對應於添加、刪除、更新、查詢的操作方法: insert()、delete()、update()和query() 。這些方法實際上是給那些不太了解SQL語法的菜鳥使用的,對於熟悉SQL語法的程序員而言,直接使用execSQL()和rawQuery()方法執行SQL語句就能完成數據的添加、刪除、更新、查詢操作。

❺ C#.NET,程序怎麼實現和SQLITE資料庫的連接以及增刪改查的功能

先下載ADO.NET2.0
Provider
for
SQLite。下載binaries
zip版就可以了。下載完後解壓縮,可以在bin目錄下找到System.Data.SQLite.DLL。在vs2008中用Add
Reference功能把System.Data.SQLite.DLL加到工程里就可以了。運行下面代碼試試:
string
datasource
=
"e:/tmp/test.db";
System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
//連接資料庫
System.Data.SQLite.SQLiteConnection
conn
=
new
System.Data.SQLite.SQLiteConnection();
System.Data.SQLite.SQLiteConnectionStringBuilder
connstr
=
new
System.Data.SQLite.SQLiteConnectionStringBuilder();
connstr.DataSource
=
datasource;
connstr.Password
=
"admin";//設置密碼,SQLite
ADO.NET實現了資料庫密碼保護
conn.ConnectionString
=
connstr.ToString();
conn.Open();
//創建表
System.Data.SQLite.SQLiteCommand
cmd
=
new
System.Data.SQLite.SQLiteCommand();
string
sql
=
"CREATE
TABLE
test(username
varchar(20),password
varchar(20))";
cmd.CommandText
=
sql;
cmd.Connection
=
conn;
cmd.ExecuteNonQuery();
//插入數據
sql
=
"INSERT
INTO
test
VALUES('a','b')";
cmd.CommandText
=
sql;
cmd.ExecuteNonQuery();
//取出數據
sql
=
"SELECT
*
FROM
test";
cmd.CommandText
=
sql;
System.Data.SQLite.SQLiteDataReader
reader
=
cmd.ExecuteReader();
StringBuilder
sb
=
new
StringBuilder();
while
(reader.Read())
{
sb.Append("username:").Append(reader.GetString(0)).Append("\n")
.Append("password:").Append(reader.GetString(1));
}
MessageBox.Show(sb.ToString());

❻ 如何通過java實現對sqlite資料庫的增刪改查

如何通過java實現對sqlite資料庫的增刪改查
首先得確定你的資料庫連接是通過什麼形式連接的,hibernate還是原生態的jdbc 還是spring; 如果是只有hibernate,那麼你得通過載入配置文件得到sessionFactory,然後得到session 如果spring,那麼同樣也需要注入sessionfactory到你的

❼ 你好 我們也是要用MY SQL實現資料庫的增刪改查

一、---資料庫創建---
想要對資料庫進行增刪改查,首先要創建一個資料庫,安卓中的資料庫是使用sqlite,我們是通過調用SQLiteOpenHelper類來進行資料庫的創建的和操作的。
[java] view plain print?在CODE上查看代碼片派生到我的代碼片package com.iigt.crud;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class MySqlite extends SQLiteOpenHelper {public MySqlite(Context context) {
//context :上下文 , name:資料庫文件的名稱 factory:用來創建cursor對象,默認為null//version:資料庫的版本號,從1開始,如果發生改變,onUpgrade方法將會調用,4.0之後只能升不能將super(context, "info.db", null,1);
}
//oncreate方法是資料庫第一次創建的時候會被調用; 特別適合做表結構的初始化,需要執行sql語句;SQLiteDatabase db可以用來執行sql語句@Override
public void onCreate(SQLiteDatabase db) {//通過SQLiteDatabase執行一個創建表的sql語句db.execSQL("create table info (_id integer primary key autoincrement,name varchar(20),phone varchar(11))");}
//onUpgrade資料庫版本號發生改變時才會執行; 特別適合做表結構的修改@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//添加一個phone欄位
//db.execSQL("alter table info add phone varchar(11)");}
}
二、---操作類---
定義完了資料庫,再就是定義我們使用的往資料庫中存數據的函數了,也就是我們通常所指的DAO函數,不過在定義DAO函數之前,先要定義一個bean類,要不想要操作的數據無從而來。如下是bean和DAO。
[java] view plain print?在CODE上查看代碼片派生到我的代碼片package com.iigt.bean;
public class InfoBean {
public String name;
public String phone;
}
DAO的代碼如下:
[java] view plain print?在CODE上查看代碼片派生到我的代碼片package com.iigt.;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;import com.iigt.bean.InfoBean;
import com.iigt.crud.MySqlite;
public class InfoDao {
private MySqlite mySqliteOpenHelper;
public InfoDao(Context context){
//創建一個幫助類對象
mySqliteOpenHelper = new MySqlite(context);}
public void add(InfoBean bean){
//調用getReadableDatabase方法,來初始化資料庫的創建SQLiteDatabase db = mySqliteOpenHelper.getWritableDatabase();//sql:sql語句, bindArgs:sql語句中佔位符的值db.execSQL("insert into info(name,phone) values(?,?);", new Object[]{bean.name,bean.phone});//關閉資料庫對象
db.close();
}
public void del(String name){
SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();db.execSQL("delete from info where name=?;", new Object[]{name});db.close();
}
public void update(InfoBean bean){
SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();db.execSQL("update info set phone=? where name=?;", new Object[]{bean.phone,bean.name});db.close();
}
public void query(String name){
//執行sql語句需要sqliteDatabase對象
//調用getReadableDatabase方法,來初始化資料庫的創建SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();//sql:sql語句, selectionArgs:查詢條件佔位符的值,返回一個cursor對象Cursor cursor = db.rawQuery("select _id, name,phone from info where name = ?;", new String []{name});//解析Cursor中的數據
if(cursor != null && cursor.getCount() >0){//判斷cursor中是否存在數據//循環遍歷結果集,獲取每一行的內容
while(cursor.moveToNext()){//條件,游標能否定位到下一行//獲取數據
int id = cursor.getInt(0);
String name_str = cursor.getString(1);
String phone = cursor.getString(2);
System.out.println("_id:"+id+";name:"+name_str+";phone:"+phone);}
cursor.close();//關閉結果集
}
//關閉資料庫對象
db.close();
}
}
三、---操作界面---
定義一操作界面來對資料庫進行操作,操作界麵包括增刪改查。
[html] view plain print?在CODE上查看代碼片派生到我的代碼片<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:orientation="vertical"
tools:context=".MainActivity" >
<Button
android:id="@+id/bt_add"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add" />
<Button
android:id="@+id/bt_del"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/del" />
<Button
android:id="@+id/bt_update"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/update" />
<Button
android:id="@+id/bt_query"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/query" />
</LinearLayout>
四、---主函數---
(1)創建一個layout界面,其中包含「增刪改查」4個控制項。
(2)獲取這四個控制項,並根據各個控制項的ID來判斷點擊的是哪個事件(3)此時如果是判斷是點擊了add事件,就應該增加了,所以需要調用增加函數(4)需要先創建一個javabean和它的操作類DAO(5)是要向資料庫中增加數據,要創建一個資料庫並進行初始化(6)在類中定義向資料庫中的增刪改查方法[java] view plain print?在CODE上查看代碼片派生到我的代碼片package com.iigt.crud;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;import com.iigt.bean.InfoBean;
import com.iigt..InfoDao;
import com.iigt.adddeldatabase.*;
public class MainActivity extends Activity implements OnClickListener {private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
//創建一個幫助類對象
MySqlite mySqliteOpenHelper = new MySqlite(mContext);//調用getReadableDatabase方法,來初始化資料庫的創建SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();//找到相應控制項
findViewById(R.id.bt_add).setOnClickListener(this);findViewById(R.id.bt_del).setOnClickListener(this);findViewById(R.id.bt_update).setOnClickListener(this);findViewById(R.id.bt_query).setOnClickListener(this);}
@Override
public void onClick(View v) {
InfoDao infoDao = new InfoDao(mContext);//創建一個對象做增刪改查switch (v.getId()) {
case R.id.bt_add:
InfoBean bean = new InfoBean();
bean.name = "張三";
bean.phone ="110";
infoDao.add(bean);
InfoBean bean1 = new InfoBean();
bean1.name = "李四";
bean1.phone ="120";
infoDao.add(bean1);
break;
case R.id.bt_del:
infoDao.del("張三");
infoDao.del("李四");
break;
case R.id.bt_update:
InfoBean bean2 = new InfoBean();
bean2.name = "張三";
bean2.phone ="119";
infoDao.update(bean2);
break;
case R.id.bt_query:
infoDao.query("張三");
infoDao.query("李四");
break;
default:
break;
}
}
}

❽ sqlite3資料庫下實現循環菜單 並具有增刪改查的功能

先下載ADO.NET2.0 Provider for SQLite。下載binaries zip版就可以了。下載完後解壓縮,可以在bin目錄下找到System.Data.SQLite.DLL。在vs2008中用Add Reference功能把System.Data.SQLite.DLL加到工程里就可以了。運行下面代碼試試:
string datasource = "e:/tmp/test.db";
System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
//連接資料庫
System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
connstr.DataSource = datasource;
connstr.Password = "admin";//設置密碼,SQLite ADO.NET實現了資料庫密碼保護
conn.ConnectionString = connstr.ToString();
conn.Open();
//創建表

❾ 如何設置sqlite

您好!很高興為你解答此類問題,具體方法請看以下:
1.SQLite簡介

SQLite是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統,它的設計目標是嵌入 式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。

它能夠支持 Windows/linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如Tcl、PHP、Java、C++、.Net等,還有ODBC介面,同樣比起 Mysql、PostgreSQL這兩款開源世界著名的資料庫管理系統來講,它的處理速度比他們都快。

2.SQLite的特點:

輕量級
SQLite和C/S模式的資料庫軟體不同,它是進程內的資料庫引擎,因此不存在資料庫的客戶端和伺服器。使用SQLite一般只需要帶上它的一個動態 庫,就可以享受它的全部功能。

而且那個動態庫的尺寸也挺小,以版本3.6.11為例,Windows下487KB、Linux下347KB。

不需要"安裝"
SQLite的核心引擎本身不依賴第三方的軟體,使用它也不需要"安裝"。有點類似那種綠色軟體。

單一文件
資料庫中所有的信息(比如表、視圖等)都包含在一個文件內。這個文件可以自由復制到其它目錄或其它機器上。

跨平台/可移植性
除了主流操作系統 windows,linux之後,SQLite還支持其它一些不常用的操作系統。

弱類型的欄位
同一列中的數據可以是不同類型

開源

3.SQLite數據類型

一般數據採用的固定的靜態數據類型,而SQLite採用的是動態數據類型,會根據存入值自動判斷。SQLite具有以下五種常用的數據類型:

NULL: 這個值為空值
VARCHAR(n):長度不固定且其最大長度為 n 的字串,n不能超過 4000。
CHAR(n):長度固定為n的字串,n不能超過 254。
INTEGER: 值被標識為整數,依據值的大小可以依次被存儲為1,2,3,4,5,6,7,8.
REAL: 所有值都是浮動的數值,被存儲為8位元組的IEEE浮動標記序號.
TEXT: 值為文本字元串,使用資料庫編碼存儲(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB數據塊,以輸入的數據格式進行存儲。如何輸入就如何存儲,不改 變格式。
DATA :包含了 年份、月份、日期。
TIME: 包含了 小時、分鍾、秒。

二.SQLiteDatabase的介紹

Android提供了創建和是用SQLite資料庫的API。SQLiteDatabase代表一個資料庫對象,提供了操作資料庫的一些方法。在Android的SDK目錄下有sqlite3工具,我們可以利用它創建資料庫、創建表和執行一些SQL語句。下面是SQLiteDatabase的常用方法。

SQLiteDatabase的常用方法

方法名稱
方法表示含義
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)
打開或創建資料庫
insert(String table,String nullColumnHack,ContentValues values)
插入一條記錄
delete(String table,String whereClause,String[] whereArgs)
刪除一條記錄
query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy)
查詢一條記錄
update(String table,ContentValues values,String whereClause,String[] whereArgs)
修改記錄
execSQL(String sql)
執行一條SQL語句
close()
關閉資料庫

Google公司命名這些方法的名稱都是非常形象的。例如openOrCreateDatabase,我們從字面英文含義就能看出這是個打開或創建資料庫的方法

1、打開或者創建資料庫
在Android 中使用SQLiteDatabase的靜態方法openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)打開或者創建一個資料庫。
它會自動去檢測是否存在這個資料庫,如果存在則打開,不存在則創建一個資料庫;創建成功則返回一個SQLiteDatabase對象,否則拋出異常FileNotFoundException。

下面是創建名為「stu.db」資料庫的代碼:
openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)
參數1 資料庫創建的路徑
參數2 一般設置為null就可以了

eg: db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.ling.db/databases/stu.db",null);
2、創建表
創建一張表的步驟很簡單:
編寫創建表的SQL語句
調用SQLiteDatabase的execSQL()方法來執行SQL語句

下面的代碼創建了一張用戶表,屬性列為:id(主鍵並且自動增加)、sname(學生姓名)、snumber(學號)
View Code
3、插入數據
ContentValues 是一種存儲的機制,常用於資料庫的操作。只能存儲基本類型。
插入數據有兩種方法:
①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,
參數1 表名稱,
參數2 空列的默認值
參數3 ContentValues類型的一個封裝了列名稱和列值的Map;
View Code

②編寫插入數據的SQL語句,直接調用SQLiteDatabase的execSQL()方法來執行

View Code
4、刪除數據

刪除數據也有兩種方法:
①調用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法
參數1 表名稱
參數2 刪除條件
參數3 刪除條件值數組
View Code

②編寫刪除SQL語句,調用SQLiteDatabase的execSQL()方法來執行刪除。

View Code

5、修改數據
修改數據有兩種方法:
①調用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法
參數1 表名稱
參數2 跟行列ContentValues類型的鍵值對Key-Value
參數3 更新條件(where字句)
參數4 更新條件數組
View Code
②編寫更新的SQL語句,調用SQLiteDatabase的execSQL執行更新。

View Code
6、查詢數據

在Android中查詢數據是通過Cursor類來實現的,當我們使用SQLiteDatabase.query()方法時,會得到一個Cursor對象,Cursor指向的就是每一條數據。它提供了很多有關查詢的方法,具體方法如下:

public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);
各個參數的意義說明:
參數table:表名稱
參數columns:列名稱數組
參數selection:條件字句,相當於where
參數selectionArgs:條件字句,參數數組
參數groupBy:分組列
參數having:分組條件
參數orderBy:排序列
參數limit:分頁查詢限制
參數Cursor:返回值,相當於結果集ResultSet
Cursor是一個游標介面,提供了遍歷查詢結果的方法,如移動指針方法move(),獲得列值方法getString()等.
Cursor游標常用方法
方法名稱
方法描述
getCount()
獲得總的數據項數
isFirst()
判斷是否第一條記錄
isLast()
判斷是否最後一條記錄
moveToFirst()
移動到第一條記錄
moveToLast()
移動到最後一條記錄
move(int offset)
移動到指定記錄
moveToNext()
移動到下一條記錄
moveToPrevious()
移動到上一條記錄
getColumnIndexOrThrow(String columnName)
根據列名稱獲得列索引
getInt(int columnIndex)
獲得指定列索引的int類型值
getString(int columnIndex)
獲得指定列縮影的String類型值
下面就是用Cursor來查詢資料庫中的數據,具體代碼如下:
View Code

7、刪除指定表
編寫插入數據的SQL語句,直接調用SQLiteDatabase的execSQL()方法來執行
View Code

三. SQLiteOpenHelper
該類是SQLiteDatabase一個輔助類。這個類主要生成一 個資料庫,並對資料庫的版本進行管理。
當在程序當中調用這個類的方法getWritableDatabase()或者 getReadableDatabase()方法的時候,如果當時沒有數據,那麼Android系統就會自動生成一個資料庫。
SQLiteOpenHelper 是一個抽象類,我們通常需要繼承它,並且實現裡面的3個函數:

1.onCreate(SQLiteDatabase)
在資料庫第一次生成的時候會調用這個方法,也就是說,只有在創建資料庫的時候才會調用,當然也有一些其它的情況,一般我們在這個方法里邊生成資料庫表。

2. onUpgrade(SQLiteDatabase,int,int)
當資料庫需要升級的時候,Android系統會主動的調用這個方法。一般我們在這個方法里邊刪除數據表,並建立新的數據表,當然是否還需要做其他的操作,完全取決於應用的需求。

3. onOpen(SQLiteDatabase):
這是當打開資料庫時的回調函數,一般在程序中不是很常使用。

寫了這么多,改用用實際例子來說明上面的內容了。
下面這個操作資料庫的實例實現了創建資料庫,創建表以及資料庫的增刪改查的操作。
該實例有兩個類:
com.ling.testSQLite 調試類
com.ling.testSQLiteDb 資料庫輔助類

SQLiteActivity.java
View Code

StuDBHelper.java

View Code
main.xml
View Code

程序運行的效果圖:

使用adb命令查看資料庫:

1.在命令行窗口輸入adb shell回車,就進入了Linux命令行,現在就可以使用Linux的命令了。

2.ls回車,顯示所有的東西,其中有個data。

3.cd data回車,再ls回車,cd data回車,ls回車後就會看到很多的com................,那就是系統上的應用程序包名,找到你資料庫程序的包名,然後進入。

4.進去後在查看所有,會看到有databases,進入databases,顯示所有就會發現你的資料庫名字,這里使用的是"stu_db"。

5.sqlite3 stu_db回車就進入了你的資料庫了,然後「.schema」就會看到該應用程序的所有表及建表語句。

6.之後就可以使用標準的SQL語句查看剛才生成的資料庫及對數據執行增刪改查了。
註:ls,cd等命令都是linux的基本命令,不了解的同學可以看看有關這方面的資料。

下面介紹幾個在SQLite中常用到的adb命令:

查看
.database 顯示資料庫信息;
.tables 顯示表名稱;
.schema 命令可以查看創建數據表時的SQL命令;
.schema table_name 查看創建表table_name時的SQL的命令;

插入記錄
insert into table_name values (field1, field2, field3...);

查詢
select * from table_name;查看table_name表中所有記錄;
select * from table_name where field1='xxxxx'; 查詢符合指定條件的記錄;

刪除
drop table_name; 刪除表;
drop index_name; 刪除索引;
-------------------------------------------查詢,插入,刪除等操作資料庫的語句記得不要漏了;----------------------------------------

# sqlite3 stu_db
sqlite3 stu_db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .schema
.schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE stu_table(id int,sname varchar(20),sage int,ssex varchar(10)); --->創建的表
sqlite> select * from stu_table;
select * from stu_table;
1|xiaoming|21|male
sqlite>

插入數據

sqlite> insert into stu_table values(2,'xiaohong',20,'female');

插入的數據記得要和表中的屬性一一對應
insert into stu_table values(2,'xiaohong',20,'female');
sqlite> select * from stu_table;
select * from stu_table;
1|xiaoming|21|male
2|xiaohong|20|female --------------> 插入的數據
sqlite>
當點擊修改數據的按鈕時候

sqlite> select * from stu_table;

select * from stu_table;
1|xiaoming|23|male -------------->年齡被修改為23
2|xiaohong|20|female
sqlite>
當點擊刪除數據的按鈕

sqlite> select * from stu_table;

select * from stu_table;
1|xiaoming|23|male id=2的數據已經被刪除
總之,我們可以在代碼中執行資料庫的增刪改查,也可以在adb命令行下實現。不過因為SQLite沒有客戶端,不能直接的查看資料庫變化後的信息,所以常用adb命令行查看資料庫改變後的信息。

前面用到的資料庫,表都是自己在代碼中創建,下面介紹如何使用外部已有的資料庫的方法:
先用SQLite管理工具,sqliteadmin 具體操作很簡單,在這里我就不詳細介紹的了,但有一個地方時候很值得注意的,就是用sqliteadmin創建資料庫的時候,資料庫保存的路徑不能是中文路徑,中文路徑會出現下面的錯誤提示:
我在sqliteadmin 創建好資料庫StuDB,:

將創建好的資料庫在DDMS中點擊導入到data/data/程序的包名/

熱點內容
去黑頭解壓視 發布:2024-11-17 03:07:08 瀏覽:455
賣保險怎麼看自己的配置 發布:2024-11-17 02:35:14 瀏覽:434
我的世界上線就送24k的伺服器 發布:2024-11-17 02:30:50 瀏覽:668
單層感知器演算法 發布:2024-11-17 02:30:06 瀏覽:781
什麼密碼不會讓人家知道 發布:2024-11-17 02:25:48 瀏覽:340
r17和s1哪個配置好 發布:2024-11-17 02:20:57 瀏覽:391
如何防止別人蹭自家的網安卓 發布:2024-11-17 02:19:30 瀏覽:758
php表格excel 發布:2024-11-17 02:11:05 瀏覽:484
python判斷是否小數 發布:2024-11-17 02:07:09 瀏覽:970
如何知道wifi的具體密碼 發布:2024-11-17 01:42:10 瀏覽:577