android 对sqlite数据库的增删改查

Sqlite是android平台的一款轻量级的、嵌入式的、关系型数据库产品,以下是一些主要概念。

1.Sqlite通过文件保存数据库,创建的数据库文件默认存在在/data/data/<package>/databases/的文件夹下,一个文件就是一个数据库。
2.一个数据库包含多个表格,一个表格包含不同的字段,字段类型等等,这与SQL数据库相似。

3.Sqlite记录没有顺序的概念,不存在第一第二类的概念,通过查询获取满足条件的记录。

 

android平台下操作数据库的的相关类

1、SQLiteOpenHelper 抽象类,用于创建和管理数据库以及版本,需要创建一个子类继承,该类封装了对数据库操作的基本方法,使用方便。

2、SQLiteDatabase 数据库访问类,主要是对数据库的增删改查等常用操作,功能比SQLiteOpenHelper丰富,比如事务管理,分页等等。

3、Cursor游标类,主要用来返回返回查询记录结果。

 

本程序主要采用SQLiteDatabase类操作数 据库,介绍android 平台下Sqlite的多种使用方法。主要功能如图。

图-1 Sqlite数据库界面的操作及其功能

图-2 创建的数据库截图

 

(1.)创建一个数据库

  1. //在文件夹/data/data/<package>/databases/创建一个students.db的数据库  
  2. //该类返回一个SQLiteDatabase,对那个数据库操作,就要打开该数据库  
  3. openOrCreateDatabase("students.db",SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  4.    

(2.)删除一个数据库

 
  1. //在Context环境中,删除students.db,该方法返回一个boolean类型  
  2. deleteDatabase("students.db");  
  3.    

(3.)获取应用程序所有数据库的名称

 
  1. //在Context环境中,获取该应用程序的所有数据库名称(即databases文件夹下的数据库文件)  
  2. //该方法返回一个字符串数组  
  3. databaseList()  
  4.    

(4.)重命名一个数据库

 
  1. //将数据库data.db重命名为renamedata.db  
  2. File f = getDatabasePath("data.db");  
  3. File renameFile=getDatabasePath("renamedata.db");  
  4. f.renameTo(renameFile);  
  5.    

2.对表的操作

(1.)创建一个表(sql语句中创建)

 
  1. mDb.execSQL("create table if not exists "+table+  
  2. " (id integer primary key autoincrement, "  
  3. + "username text not null, info text not null);");  
  4.    

(2.)删除一个表

 
  1. mDb.execSQL("drop table if exists " + table);  
  2.    

(3.)修改表

Sqlite是不能修改一个表的字段,不能删除一个表的字段,但是可以重命名一个表的名称,可以添加一个字段及其属性

1.)重命名表

 
  1. mDb.execSQL("alter table " + oldTable + " rename to  "+ newTableName+";");  
  2.    

2.)添加一列

 
  1. mDb.execSQL("alter table  " + table + " add column " + column +  type + " ;");  
  2.    

(4.)获取一个数据库的所有表的名称

 
  1. mDb.rawQuery("select name from sqlite_master where type='table' order by name",null);  
  2.    

3.对数据库记录的操作

(1.)添加一条记录

 
  1. ContentValues values = new ContentValues();  
  2. values.put("username", user.getUsername());  
  3. values.put("info", user.getInfo());  
  4. mDb.insert(table, null, values);  
  5.    

(2.)删除一条记录

 
  1. String whereClause =  "id=?";  
  2. String[] whereArgs = new String[] {String.valueOf(id)};  
  3. mDb.delete(table, whereClause, whereArgs);  
  4.    

(3.)修改一条记录

 
  1. ContentValues values = new ContentValues();  
  2. values.put("username", username);  
  3. values.put("info", info);  
  4. String whereClause = "id=?";  
  5. String[] whereArgs = new String[] { String.valueOf(id) };  
  6. mDb.update(table, values, whereClause, whereArgs);  
  7.    

(4.)查询一条数据

 
  1. String[] columns = new String[] { "id", "username", "info" };  
  2. String selection = "id=?";  
  3. String[] selectionArgs = { String.valueOf(id) };  
  4. String groupBy = null;  
  5. String having = null;  
  6. String orderBy = null;  
  7. mDb.query(table, columns, selection,selectionArgs, groupBy, having, orderBy);  
  8.    

(5.)查询所有记录

 
  1. mDb.rawQuery("select * from "+table, null);  
  2.    

SqliteActivity源码类如下(注意:在点击对数据记录的增删改查时要先create table ,否则会因为无法找到mytable表而报错)

SqliteActivity.java

 
  1. package com.sqlite.main;  
  2.   
  3. import java.io.File;  
  4. import android.app.Activity;  
  5. import android.content.ContentValues;  
  6. import android.database.Cursor;  
  7. import android.database.SQLException;  
  8. import android.database.sqlite.SQLiteDatabase;  
  9. import android.os.Bundle;  
  10. import android.text.Html;  
  11. import android.view.View;  
  12. import android.view.View.OnClickListener;  
  13. import android.widget.Button;  
  14. import android.widget.TextView;  
  15. import android.widget.Toast;  
  16.   
  17. public class SqliteActivity extends Activity {  
  18. /** Called when the activity is first created. */  
  19.   
  20.     //SQLiteDatabase 引用  
  21.     SQLiteDatabase mDb;  
  22.     SQLiteDatabaseDao dao;  
  23.     //显示结果  
  24.     TextView show;  
  25.   
  26.     @Override  
  27.     public void onCreate(Bundle savedInstanceState) {  
  28.          super.onCreate(savedInstanceState);  
  29.          setContentView(R.layout.main);  
  30.         //默认创建一个users.db的数据库  
  31.          dao=new SQLiteDatabaseDao();  
  32.     
  33.     //创建一个数据库  
  34.     Button createDatabase=(Button)findViewById(R.id.createdatabase);  
  35.     createDatabase.setOnClickListener(createDatabaseClick);  
  36.     //获取所有数据库  
  37.     Button getDatabasesList=(Button)findViewById(R.id.getdatabaseslist);  
  38.     getDatabasesList.setOnClickListener(getDatabaseListClick);  
  39.     //重命名数据库  
  40.     Button renameDatabase=(Button)findViewById(R.id.renamedatabase);  
  41.     renameDatabase.setOnClickListener(renameDatabaseClick);  
  42.     //删除一个数据库  
  43.     Button removeDatabase=(Button)findViewById(R.id.removedatabase);  
  44.     removeDatabase.setOnClickListener(removeDatabaseClick);  
  45.     //创建一个表  
  46.     Button createTable=(Button)findViewById(R.id.createtable);  
  47.     createTable.setOnClickListener(createTableClick);  
  48.     //获取所有的表  
  49.     Button getTablesList=(Button)findViewById(R.id.gettableslist);  
  50.     getTablesList.setOnClickListener(getTablesListClick);  
  51.     //重命名一个表  
  52.     Button renameTable=(Button)findViewById(R.id.renametable);  
  53.     renameTable.setOnClickListener(renameTableClick);  
  54.     //删除一个表  
  55.     Button dropTable=(Button)findViewById(R.id.droptable);  
  56.     dropTable.setOnClickListener(dropTableClick);  
  57.     //为表添加一个字段  
  58.     Button addTableColumn=(Button)findViewById(R.id.addtablecolumn);  
  59.     addTableColumn.setOnClickListener(addTableColumnClick);  
  60.     //获取表的所有列  
  61.     Button getTableColumnsList=(Button)findViewById(R.id.gettablecolumnslist);  
  62.     getTableColumnsList.setOnClickListener(getTableColumnsListClick);  
  63.     //插入一条数据  
  64.     Button insertTable=(Button)findViewById(R.id.inserttable);  
  65.     insertTable.setOnClickListener(insertTableClick);  
  66.     //查询一条数据  
  67.     Button queryTable=(Button)findViewById(R.id.querytable);  
  68.     queryTable.setOnClickListener(queryTableClick);  
  69.     //更新一条数据  
  70.     Button updateTable=(Button)findViewById(R.id.updatetable);  
  71.     updateTable.setOnClickListener(updateTableClick);  
  72.     //删除一条数据  
  73.     Button delete=(Button)findViewById(R.id.delete);  
  74.     delete.setOnClickListener(deleteClick);  
  75.     //显示结果  
  76.     show=(TextView)findViewById(R.id.showresult);    
  77. }  
  78.   
  79. /************对按钮事件进行操作的事件响应****************/  
  80.   
  81.     //创建一个数据库  
  82.     OnClickListener createDatabaseClick=new OnClickListener() {  
  83.  
  84.         @Override  
  85.         public void onClick(View v) {  
  86.         // TODO Auto-generated method stub  
  87.         //创建一个名为students.db的数据库,主要是生成另外一个数据库以示区别  
  88.         openOrCreateDatabase("students.db",  SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  89.         show.setText("创建的数据库路径为\n"  +getDatabasePath("students.db"));   
  90.     }  
  91. };  
  92.    
  93. //创建一个应用程序数据库的个数(list)的事件响应  
  94. OnClickListener getDatabaseListClick=new OnClickListener() {  
  95.     @Override  
  96.     public void onClick(View v) {  
  97.         // TODO Auto-generated method stub  
  98.         String []dblist=dao.getDatabasesList();  
  99.         String rs="";  
  100.         for(String s:dblist){  
  101.                  rs+=s+"\n";  
  102.         }  
  103.         show.setText("数据库名称为:\n"+ rs);    
  104.    }  
  105. };  
  106.     
  107. //重命名一个数据库的事件响应  
  108. OnClickListener renameDatabaseClick=new OnClickListener() {    
  109.     @Override  
  110.     public void onClick(View v) {  
  111.         // TODO Auto-generated method stub  
  112.         //创建一个data.db的数据库,并命名为renamedata.db数据库  
  113.         openOrCreateDatabase("data.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  114.         File f = getDatabasePath("data.db");  
  115.         File renameFile=getDatabasePath("renamedata.db");  
  116.         boolean b=f.renameTo(renameFile);  
  117.         if(b)  
  118.                  show.setText("data.db已经重命名为renamedata.db");  
  119.         else  
  120.         show.setText("无法重命名");  
  121.     }  
  122. };    
  123.   
  124. //删除一个数据库的事件响应  
  125. OnClickListener removeDatabaseClick=new OnClickListener() {  
  126.     @Override  
  127.     public void onClick(View v) {  
  128.         // TODO Auto-generated method stub  
  129.         /删除students.db数据库  
  130.         dao.dropDatabase("students.db");  
  131.         //重新获取数据库名称  
  132.         String []dblist=dao.getDatabasesList();  
  133.         String rs="";  
  134. for(String s:dblist){  
  135. rs+=s+"\n";  
  136. }  
  137. show.setText("数据库students.db已经删除\n现在数据库的名称为:\n"+rs);  
  138. }  
  139. };  
  140.   
  141. //创建一个表的事件响应  
  142.   
  143. OnClickListener createTableClick=new OnClickListener() {  
  144.   
  145. @Override  
  146. public void onClick(View v) {  
  147. // TODO Auto-generated method stub  
  148. //在user.db数据库中插入mytable表,并添加相应的字段  
  149. dao.createTable(mDb, "mytable");  
  150. show.setText("数据库students.db已经创建mytable表\n");  
  151.   
  152. }  
  153. };  
  154.   
  155.   
  156. //获取一个数据库的所有表个数(list)的事件响应  
  157.   
  158. OnClickListener getTablesListClick=new OnClickListener() {  
  159.   
  160. @Override  
  161. public void onClick(View v) {  
  162. // TODO Auto-generated method stub  
  163.   
  164. //显示所有的表的数据  
  165. String tableNames=dao.getTablesList(mDb);  
  166. show.setText(tableNames);  
  167.   
  168. }  
  169. };  
  170.   
  171. //重命名一个表的事件响应  
  172.   
  173. OnClickListener renameTableClick=new OnClickListener() {  
  174.   
  175. @Override  
  176. public void onClick(View v) {  
  177. // TODO Auto-generated method stub  
  178. //创建一个testtable的表  
  179. dao.createTable(mDb, "testtable");  
  180. //将testtable重命名为newtable  
  181. boolean b=dao.alterTableRenameTable(mDb, "testtable", "newtable");  
  182. if(b)show.setText("testtable已经重命名为\nnewtable表\n");  
  183. else show.setText("newtable已经存在\n请删除(drop table)后重试");  
  184. }  
  185. };  
  186.   
  187. //删除一个表的事件响应  
  188.   
  189. OnClickListener dropTableClick=new OnClickListener() {  
  190.   
  191. @Override  
  192. public void onClick(View v) {  
  193. // TODO Auto-generated method stub  
  194. //删除    newtable表  
  195. dao.dropTable(mDb, "newtable");  
  196. //显示所有的表的数据  
  197. String tableNames=dao.getTablesList(mDb);  
  198. show.setText("newtable已经删除\n现在表名称为:\n"+tableNames);  
  199. }  
  200. };  
  201.   
  202.   
  203. //修改一个表(给表添加一个字段)的事件响应  
  204.   
  205. OnClickListener addTableColumnClick=new OnClickListener() {  
  206.   
  207. @Override  
  208. public void onClick(View v) {  
  209. // TODO Auto-generated method stub  
  210. //默认添加一个password字段,类型为varchar,长度为30  
  211. boolean b=dao.alterTableAddColumn(mDb, "mytable", "password", " varchar(30)");  
  212. if(b)show.setText("已经添加password字段\n字符类型为:varchar\n长度为:30");  
  213. else show.setText("mytable表中password字段已经存在");  
  214. }  
  215. };  
  216.   
  217. //获取一个表的所有列的名称事件响应  
  218.   
  219. OnClickListener getTableColumnsListClick=new OnClickListener() {  
  220.   
  221. @Override  
  222. public void onClick(View v) {  
  223. // TODO Auto-generated method stub  
  224.   
  225. String str=dao.getTableColumns(mDb);  
  226. show.setText("mytable表的列名:\n"+str);  
  227. }  
  228. };  
  229.   
  230.   
  231. //对一个表添加一个数据的事件响应  
  232.   
  233. OnClickListener insertTableClick=new OnClickListener() {  
  234.   
  235. @Override  
  236. public void onClick(View v) {  
  237. // TODO Auto-generated method stub  
  238.   
  239. User user=new User();  
  240. user.setUsername("Mr.Young");  
  241. user.setInfo("好学生");  
  242. dao.insert(mDb, "mytable", user);  
  243.   
  244. Cursor c=dao.getAllData(mDb, "mytable");  
  245. if(c.moveToLast()){  
  246. String id=c.getString(0);  
  247. String username=c.getString(1);  
  248. String info=c.getString(2);  
  249.   
  250. show.setText("最新添加的一条数据:\n"+"id:"+id+"\nusername:"+username+"\ninfo:"+info);  
  251. }  
  252.   
  253. }  
  254. };  
  255.   
  256. //查询一个表的所有数据记录的事件响应  
  257.   
  258. OnClickListener queryTableClick=new OnClickListener() {  
  259.   
  260. @Override  
  261. public void onClick(View v) {  
  262. // TODO Auto-generated method stub  
  263. //默认查询mytable所有数据  
  264.   
  265. Cursor c=dao.getAllData(mDb, "mytable");  
  266. String s="";  
  267. int columnsSize=c.getColumnCount();  
  268. String []columns=c.getColumnNames();  
  269. String columnsName="";  
  270. //获取表头  
  271. for (String col : columns) {  
  272.   
  273. columnsName+=col+"\u0020 \u0020";  
  274. }  
  275. //获取表的内容  
  276. while(c.moveToNext()){  
  277.   
  278. for(int i=0;i<columnsSize;i++){  
  279. s+=c.getString(i)+"\u0020 \u0020";  
  280. }  
  281. s+="<br>";  
  282. }  
  283. show.setText(Html.fromHtml("<h5>"+columnsName+"</h5>"+s));  
  284. }  
  285. };  
  286.   
  287. //更新一个表的数据的事件响应  
  288.   
  289. OnClickListener updateTableClick=new OnClickListener() {  
  290.   
  291. @Override  
  292. public void onClick(View v) {  
  293. // TODO Auto-generated method stub  
  294. Cursor c=dao.getAllData(mDb, "mytable");  
  295. if(c.moveToFirst()){  
  296.   
  297. int first=Integer.valueOf(c.getString(0));  
  298.   
  299. //默认修改第一条记录  
  300. dao.update(mDb, "mytable", first, "Yong Ming", "学习成绩优异");  
  301. Cursor u=dao.queryById(mDb, "mytable", first);  
  302. u.moveToFirst();  
  303. show.setText("id为:"+first+"的记录已经修改:\nid:"+first+"\nusername:"+u.getString(1)+"\ninfo:"+u.getString(2));  
  304.   
  305. }else  
  306.   
  307. show.setText("没有要更新的记录!请添加数据后再作修改");  
  308. }  
  309. };  
  310.   
  311. //删除一个表的一条数据的事件响应  
  312.   
  313. OnClickListener deleteClick=new OnClickListener() {  
  314.   
  315. @Override  
  316. public void onClick(View v) {  
  317. // TODO Auto-generated method stub  
  318. Cursor c=dao.getAllData(mDb, "mytable");  
  319. if(c.moveToLast()){  
  320. int last=Integer.valueOf(c.getString(0));  
  321.   
  322. //默认删除最后一条记录  
  323. boolean b=dao.delete(mDb, "mytable", last);  
  324. if(b)  
  325. show.setText("成功删除id为:\n"+last+"的记录!");  
  326. }  
  327. else  
  328. show.setText("没有要删除的记录!");  
  329. }  
  330. };  
  331.   
  332.   
  333. //退出时关闭数据库  
  334. @Override  
  335. public void finish() {  
  336. // TODO Auto-generated method stub  
  337. super.finish();  
  338. mDb.close();  
  339. }  
  340.   
  341.   
  342.   
  343.   
  344.   
  345. /******************* 
  346. * 对Sqlite数据库进行操作的类 
  347. * ****************/  
  348.   
  349. class SQLiteDatabaseDao {  
  350.   
  351. public SQLiteDatabaseDao(){  
  352. mDb=openOrCreateDatabase("users.db",  
  353. SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  354. }  
  355.   
  356. /************ 对数据库的操作 ***********************/  
  357.   
  358. // 获取所有数据库的名称  
  359. public String[] getDatabasesList() {  
  360.   
  361. return databaseList();  
  362. }  
  363.   
  364. // 创建一个数据库  
  365. public void createDatabase(String db) {  
  366.   
  367. openOrCreateDatabase(db, SQLiteDatabase.CREATE_IF_NECESSARY, null);  
  368. }  
  369.   
  370. // 删除一个数据库  
  371. public void dropDatabase(String db) {  
  372.   
  373. try {  
  374. deleteDatabase(db);  
  375.   
  376. } catch (SQLException e) {  
  377. Toast.makeText(getApplicationContext(), "删除数据库失败",  
  378. Toast.LENGTH_LONG).show();  
  379.   
  380. }  
  381. }  
  382.   
  383. /************ 对数据库的表的属性添加修改操作 ***********************/  
  384.   
  385. // 获取某个数据库的表的名称  
  386. public String getTablesList(SQLiteDatabase mDb) {  
  387.   
  388. Cursor c = mDb  
  389. .rawQuery(  
  390. "select name from sqlite_master where type='table' order by name",  
  391. null);  
  392. String str="";  
  393. while (c.moveToNext()) {  
  394. str+=c.getString(0)+"\n";  
  395.   
  396. }  
  397. return "表的名称为:\n"+str;  
  398. }  
  399.   
  400. // 创建一个表,默认创建一个username info字段的表,可以在后面的代码中添加相应的列  
  401. public void createTable(SQLiteDatabase mDb, String table) {  
  402. try {  
  403. mDb.execSQL("create table if not exists "+table+  
  404. " (id integer primary key autoincrement, "  
  405. + "username text not null, info text not null);");  
  406. } catch (SQLException e) {  
  407. Toast.makeText(getApplicationContext(), "数据表创建失败",  
  408. Toast.LENGTH_LONG).show();  
  409. }  
  410. }  
  411.   
  412. // 删除一个表  
  413. public void dropTable(SQLiteDatabase mDb, String table) {  
  414.   
  415. try {  
  416. mDb.execSQL("drop table if exists " + table);  
  417.   
  418. } catch (SQLException e) {  
  419. Toast.makeText(getApplicationContext(), "数据表删除失败",  
  420. Toast.LENGTH_LONG).show();  
  421. }  
  422.   
  423. }  
  424.   
  425. // 修改表--重命名表名  
  426. public boolean alterTableRenameTable(SQLiteDatabase mDb, String oldTable,  
  427. String newTableName) {  
  428. try {  
  429. mDb.execSQL("alter table " + oldTable + " rename to  "  
  430. + newTableName+";");  
  431.   
  432. } catch (SQLException e) {  
  433. Toast.makeText(getApplicationContext(), "数据表重命名失败",  
  434. Toast.LENGTH_LONG).show();  
  435. return false;  
  436. }  
  437.   
  438. return true;  
  439. }  
  440.   
  441. // 修改表--添加一列  
  442. // @table 需要修改的table名  
  443. // @column 添加的列的名称  
  444. // @type 列的类型,如text,varchar等  
  445. public boolean alterTableAddColumn(SQLiteDatabase mDb, String table,  
  446. String column, String type) {  
  447. try {  
  448. mDb.execSQL("alter table  " + table + " add column " + column  
  449. + type + " ;");  
  450.   
  451. } catch (SQLException e) {  
  452. Toast.makeText(getApplicationContext(), "数据表添加失败",  
  453. Toast.LENGTH_LONG).show();  
  454. return false;  
  455. }  
  456.   
  457. return true;  
  458. }  
  459.   
  460. // 获取表的列的名称  
  461. public String getTableColumns(SQLiteDatabase mDb) {  
  462.   
  463. Cursor c=dao.getAllData(mDb, "mytable");;  
  464. String []columns=c.getColumnNames();  
  465. String str="";  
  466. for (String s : columns) {  
  467.   
  468. str+=s+"\n";  
  469.   
  470. }  
  471.   
  472. return str;  
  473. }  
  474.   
  475. /************ 对数据库的表数据增删改查操作 ***********************/  
  476. // 添加一条数据,默认只向username和info字段添加数据  
  477.   
  478. public long insert(SQLiteDatabase mDb,String table,User user) {  
  479.   
  480. ContentValues values = new ContentValues();  
  481. values.put("username", user.getUsername());  
  482. values.put("info", user.getInfo());  
  483. return mDb.insert(table, null, values);  
  484. }  
  485.   
  486. /* 
  487. * 删除一条数据 
  488. */  
  489. public boolean delete(SQLiteDatabase mDb,String table,int id) {  
  490.   
  491. String whereClause =  "id=?";  
  492. String[] whereArgs = new String[] {String.valueOf(id)};  
  493. try{  
  494. mDb.delete(table, whereClause, whereArgs);  
  495. }catch (SQLException e) {  
  496. Toast.makeText(getApplicationContext(), "删除数据库失败",  
  497. Toast.LENGTH_LONG).show();  
  498. return false;  
  499. }  
  500. return true;  
  501. }  
  502.   
  503. /* 
  504. * 修改一条数据 
  505. */  
  506. public void update(SQLiteDatabase mDb,String table,int id,String username,String info)  
  507.  {  
  508.   
  509. ContentValues values = new ContentValues();  
  510. values.put("username", username);  
  511. values.put("info", info);  
  512. String whereClause = "id=?";  
  513. String[] whereArgs = new String[] { String.valueOf(id) };  
  514. mDb.update(table, values, whereClause, whereArgs);  
  515. }  
  516.   
  517. public Cursor queryById(SQLiteDatabase mDb,String table,int id) {  
  518.   
  519. // 第一个参数String:表名  
  520. // 第二个参数String[]:要查询的列名  
  521. // 第三个参数String:查询条件  
  522. // 第四个参数String[]:查询条件的参数  
  523. // 第五个参数String:对查询的结果进行分组  
  524. // 第六个参数String:对分组的结果进行限制  
  525. // 第七个参数String:对查询的结果进行排序  
  526. String[] columns = new String[] { "id", "username", "info" };  
  527. String selection = "id=?";  
  528. String[] selectionArgs = { String.valueOf(id) };  
  529. String groupBy = null;  
  530. String having = null;  
  531. String orderBy = null;  
  532. return mDb.query(table, columns, selection,  
  533. selectionArgs, groupBy, having, orderBy);  
  534. }  
  535.   
  536. public Cursor getAllData(SQLiteDatabase mDb,String table) {  
  537.   
  538. //遍历表所有数据  
  539. return mDb.rawQuery("select * from "+table, null);  
  540.   
  541.   
  542. /** 如果需要返回指定的列,则执行以下语句 
  543. String[] columns = new String[] { "id","username", "info" }; 
  544. // 调用SQLiteDatabase类的query函数查询记录 
  545. return mDb.query(table, columns, null, null, null, null, 
  546. null); 
  547.  
  548. */  
  549.   
  550. }  
  551.   
  552. }  
  553.   
  554. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值