• android 对sqlite数据库的增删改查


    android平台下数据库的一些概念

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

    1.Sqlite通过文件保存数据库,创建的数据库文件默认存在在/data/data/<package>/databases/的文件

    夹下,一个文件就是一个数据库。

    2.一个数据库包含多个表格,一个表格包含不同的字段,字段类型等等,这与SQL数据库相似。

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

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

    (1.)SQLiteOpenHelper 抽象类,用于创建和管理数据库以及版本,需要创建一个子类继承,该类封装

    了对数据库操作的基本方法,使用方便。

    (2.)SQLiteDatabase 数据库访问了,主要是对数据库的增删改查等常用操作,功能比

    SQLiteOpenHelper丰富,比如事务管理,分页等等。

    (3.)Cursor游标类,主要用来返回返回查询记录结果

    SQLiteOpenHelper 类使用方法比较少,网上介绍也比较多,本程序主要采用SQLiteDatabase类操作数

    据库,介绍android 平台下Sqlite的多种使用方法。主要功能如图-1界面所示。

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

    图-2 创建的数据库截图

    源码下载: Sqlite.zip
    1.对数据库的操作

    (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. //创建一个数据库  
    83. OnClickListener createDatabaseClick=new OnClickListener() {  
    84.   
    85. @Override  
    86. public void onClick(View v) {  
    87. // TODO Auto-generated method stub  
    88. //创建一个名为students.db的数据库,主要是生成另外一个数据库以示区别  
    89. openOrCreateDatabase("students.db",  
    90. SQLiteDatabase.CREATE_IF_NECESSARY, null);  
    91. show.setText("创建的数据库路径为\n"  
    92. +getDatabasePath("students.db"));  
    93.   
    94. }  
    95. };  
    96.   
    97. //创建一个应用程序数据库的个数(list)的事件响应  
    98. OnClickListener getDatabaseListClick=new OnClickListener() {  
    99.   
    100. @Override  
    101. public void onClick(View v) {  
    102. // TODO Auto-generated method stub  
    103. String []dblist=dao.getDatabasesList();  
    104. String rs="";  
    105. for(String s:dblist){  
    106. rs+=s+"\n";  
    107. }  
    108. show.setText("数据库名称为:\n"+ rs);  
    109.   
    110. }  
    111. };  
    112.   
    113. //重命名一个数据库的事件响应  
    114. OnClickListener renameDatabaseClick=new OnClickListener() {  
    115.   
    116. @Override  
    117. public void onClick(View v) {  
    118. // TODO Auto-generated method stub  
    119. //创建一个data.db的数据库,并命名为renamedata.db数据库  
    120. openOrCreateDatabase("data.db",  
    121. SQLiteDatabase.CREATE_IF_NECESSARY, null);  
    122. File f = getDatabasePath("data.db");  
    123. File renameFile=getDatabasePath("renamedata.db");  
    124. boolean b=f.renameTo(renameFile);  
    125. if(b)  
    126. show.setText("data.db已经重命名为renamedata.db");  
    127. else  
    128.   
    129. show.setText("无法重命名");  
    130. }  
    131. };  
    132.   
    133. //删除一个数据库的事件响应  
    134. OnClickListener removeDatabaseClick=new OnClickListener() {  
    135.   
    136. @Override  
    137. public void onClick(View v) {  
    138. // TODO Auto-generated method stub  
    139. //删除students.db数据库  
    140. dao.dropDatabase("students.db");  
    141. //重新获取数据库名称  
    142. String []dblist=dao.getDatabasesList();  
    143. String rs="";  
    144. for(String s:dblist){  
    145. rs+=s+"\n";  
    146. }  
    147. show.setText("数据库students.db已经删除\n现在数据库的名称为:\n"+rs);  
    148. }  
    149. };  
    150.   
    151. //创建一个表的事件响应  
    152.   
    153. OnClickListener createTableClick=new OnClickListener() {  
    154.   
    155. @Override  
    156. public void onClick(View v) {  
    157. // TODO Auto-generated method stub  
    158. //在user.db数据库中插入mytable表,并添加相应的字段  
    159. dao.createTable(mDb, "mytable");  
    160. show.setText("数据库students.db已经创建mytable表\n");  
    161.   
    162. }  
    163. };  
    164.   
    165. //获取一个数据库的所有表个数(list)的事件响应  
    166.   
    167. OnClickListener getTablesListClick=new OnClickListener() {  
    168.   
    169. @Override  
    170. public void onClick(View v) {  
    171. // TODO Auto-generated method stub  
    172.   
    173. //显示所有的表的数据  
    174. String tableNames=dao.getTablesList(mDb);  
    175. show.setText(tableNames);  
    176.   
    177. }  
    178. };  
    179.   
    180. //重命名一个表的事件响应  
    181.   
    182. OnClickListener renameTableClick=new OnClickListener() {  
    183.   
    184. @Override  
    185. public void onClick(View v) {  
    186. // TODO Auto-generated method stub  
    187. //创建一个testtable的表  
    188. dao.createTable(mDb, "testtable");  
    189. //将testtable重命名为newtable  
    190. boolean b=dao.alterTableRenameTable(mDb, "testtable""newtable");  
    191. if(b)show.setText("testtable已经重命名为\nnewtable表\n");  
    192. else show.setText("newtable已经存在\n请删除(drop table)后重试");  
    193. }  
    194. };  
    195.   
    196. //删除一个表的事件响应  
    197.   
    198. OnClickListener dropTableClick=new OnClickListener() {  
    199.   
    200. @Override  
    201. public void onClick(View v) {  
    202. // TODO Auto-generated method stub  
    203. //删除    newtable表  
    204. dao.dropTable(mDb, "newtable");  
    205. //显示所有的表的数据  
    206. String tableNames=dao.getTablesList(mDb);  
    207. show.setText("newtable已经删除\n现在表名称为:\n"+tableNames);  
    208. }  
    209. };  
    210.   
    211. //修改一个表(给表添加一个字段)的事件响应  
    212.   
    213. OnClickListener addTableColumnClick=new OnClickListener() {  
    214.   
    215. @Override  
    216. public void onClick(View v) {  
    217. // TODO Auto-generated method stub  
    218. //默认添加一个password字段,类型为varchar,长度为30  
    219. boolean b=dao.alterTableAddColumn(mDb, "mytable""password"" varchar(30)");  
    220. if(b)show.setText("已经添加password字段\n字符类型为:varchar\n长度为:30");  
    221. else show.setText("mytable表中password字段已经存在");  
    222. }  
    223. };  
    224.   
    225. //获取一个表的所有列的名称事件响应  
    226.   
    227. OnClickListener getTableColumnsListClick=new OnClickListener() {  
    228.   
    229. @Override  
    230. public void onClick(View v) {  
    231. // TODO Auto-generated method stub  
    232.   
    233. String str=dao.getTableColumns(mDb);  
    234. show.setText("mytable表的列名:\n"+str);  
    235. }  
    236. };  
    237.   
    238. //对一个表添加一个数据的事件响应  
    239.   
    240. OnClickListener insertTableClick=new OnClickListener() {  
    241.   
    242. @Override  
    243. public void onClick(View v) {  
    244. // TODO Auto-generated method stub  
    245.   
    246. User user=new User();  
    247. user.setUsername("Mr.Young");  
    248. user.setInfo("好学生");  
    249. dao.insert(mDb, "mytable", user);  
    250.   
    251. Cursor c=dao.getAllData(mDb, "mytable");  
    252. if(c.moveToLast()){  
    253. String id=c.getString(0);  
    254. String username=c.getString(1);  
    255. String info=c.getString(2);  
    256.   
    257. show.setText("最新添加的一条数据:\n"+"id:"+id+"\nusername:"+username+"\ninfo:"+info);  
    258. }  
    259.   
    260. }  
    261. };  
    262.   
    263. //查询一个表的所有数据记录的事件响应  
    264.   
    265. OnClickListener queryTableClick=new OnClickListener() {  
    266.   
    267. @Override  
    268. public void onClick(View v) {  
    269. // TODO Auto-generated method stub  
    270. //默认查询mytable所有数据  
    271.   
    272. Cursor c=dao.getAllData(mDb, "mytable");  
    273. String s="";  
    274. int columnsSize=c.getColumnCount();  
    275. String []columns=c.getColumnNames();  
    276. String columnsName="";  
    277. //获取表头  
    278. for (String col : columns) {  
    279.   
    280. columnsName+=col+"\u0020 \u0020";  
    281. }  
    282. //获取表的内容  
    283. while(c.moveToNext()){  
    284.   
    285. for(int i=0;i<columnsSize;i++){  
    286. s+=c.getString(i)+"\u0020 \u0020";  
    287. }  
    288. s+="<br>";  
    289. }  
    290. show.setText(Html.fromHtml("<h5>"+columnsName+"</h5>"+s));  
    291. }  
    292. };  
    293.   
    294. //更新一个表的数据的事件响应  
    295.   
    296. OnClickListener updateTableClick=new OnClickListener() {  
    297.   
    298. @Override  
    299. public void onClick(View v) {  
    300. // TODO Auto-generated method stub  
    301. Cursor c=dao.getAllData(mDb, "mytable");  
    302. if(c.moveToFirst()){  
    303.   
    304. int first=Integer.valueOf(c.getString(0));  
    305.   
    306. //默认修改第一条记录  
    307. dao.update(mDb, "mytable", first, "Yong Ming""学习成绩优异");  
    308. Cursor u=dao.queryById(mDb, "mytable", first);  
    309. u.moveToFirst();  
    310. show.setText("id为:"+first+"的记录已经修改:\nid:"+first+"\nusername:"+u.getString(1)+"\ninfo:"+u.getString(2));  
    311.   
    312. }else  
    313.   
    314. show.setText("没有要更新的记录!请添加数据后再作修改");  
    315. }  
    316. };  
    317.   
    318. //删除一个表的一条数据的事件响应  
    319.   
    320. OnClickListener deleteClick=new OnClickListener() {  
    321.   
    322. @Override  
    323. public void onClick(View v) {  
    324. // TODO Auto-generated method stub  
    325. Cursor c=dao.getAllData(mDb, "mytable");  
    326. if(c.moveToLast()){  
    327. int last=Integer.valueOf(c.getString(0));  
    328.   
    329. //默认删除最后一条记录  
    330. boolean b=dao.delete(mDb, "mytable", last);  
    331. if(b)  
    332. show.setText("成功删除id为:\n"+last+"的记录!");  
    333. }  
    334. else  
    335. show.setText("没有要删除的记录!");  
    336. }  
    337. };  
    338.   
    339. //退出时关闭数据库  
    340. @Override  
    341. public void finish() {  
    342. // TODO Auto-generated method stub  
    343. super.finish();  
    344. mDb.close();  
    345. }  
    346.   
    347. /******************* 
    348. * 
    349. * 
    350. * 
    351. * 对Sqlite数据库进行操作的类 
    352. * 
    353. * 
    354. * 
    355. * ****************/  
    356.   
    357. class SQLiteDatabaseDao {  
    358.   
    359. public SQLiteDatabaseDao(){  
    360. mDb=openOrCreateDatabase("users.db",  
    361. SQLiteDatabase.CREATE_IF_NECESSARY, null);  
    362. }  
    363.   
    364. /************ 对数据库的操作 ***********************/  
    365.   
    366. // 获取所有数据库的名称  
    367. public String[] getDatabasesList() {  
    368.   
    369. return databaseList();  
    370. }  
    371.   
    372. // 创建一个数据库  
    373. public void createDatabase(String db) {  
    374.   
    375. openOrCreateDatabase(db, SQLiteDatabase.CREATE_IF_NECESSARY, null);  
    376. }  
    377.   
    378. // 删除一个数据库  
    379. public void dropDatabase(String db) {  
    380.   
    381. try {  
    382. deleteDatabase(db);  
    383.   
    384. catch (SQLException e) {  
    385. Toast.makeText(getApplicationContext(), "删除数据库失败",  
    386. Toast.LENGTH_LONG).show();  
    387.   
    388. }  
    389. }  
    390.   
    391. /************ 对数据库的表的属性添加修改操作 ***********************/  
    392.   
    393. // 获取某个数据库的表的名称  
    394. public String getTablesList(SQLiteDatabase mDb) {  
    395.   
    396. Cursor c = mDb  
    397. .rawQuery(  
    398. "select name from sqlite_master where type='table' order by name",  
    399. null);  
    400. String str="";  
    401. while (c.moveToNext()) {  
    402. str+=c.getString(0)+"\n";  
    403.   
    404. }  
    405. return "表的名称为:\n"+str;  
    406. }  
    407.   
    408. // 创建一个表,默认创建一个username info字段的表,可以在后面的代码中添加相应的列  
    409. public void createTable(SQLiteDatabase mDb, String table) {  
    410. try {  
    411. mDb.execSQL("create table if not exists "+table+  
    412. " (id integer primary key autoincrement, "  
    413. "username text not null, info text not null);");  
    414. catch (SQLException e) {  
    415. Toast.makeText(getApplicationContext(), "数据表创建失败",  
    416. Toast.LENGTH_LONG).show();  
    417. }  
    418. }  
    419.   
    420. // 删除一个表  
    421. public void dropTable(SQLiteDatabase mDb, String table) {  
    422.   
    423. try {  
    424. mDb.execSQL("drop table if exists " + table);  
    425.   
    426. catch (SQLException e) {  
    427. Toast.makeText(getApplicationContext(), "数据表删除失败",  
    428. Toast.LENGTH_LONG).show();  
    429. }  
    430.   
    431. }  
    432.   
    433. // 修改表--重命名表名  
    434. public boolean alterTableRenameTable(SQLiteDatabase mDb, String oldTable,  
    435. String newTableName) {  
    436. try {  
    437. mDb.execSQL("alter table " + oldTable + " rename to  "  
    438. + newTableName+";");  
    439.   
    440. catch (SQLException e) {  
    441. Toast.makeText(getApplicationContext(), "数据表重命名失败",  
    442. Toast.LENGTH_LONG).show();  
    443. return false;  
    444. }  
    445.   
    446. return true;  
    447. }  
    448.   
    449. // 修改表--添加一列  
    450. // @table 需要修改的table名  
    451. // @column 添加的列的名称  
    452. // @type 列的类型,如text,varchar等  
    453. public boolean alterTableAddColumn(SQLiteDatabase mDb, String table,  
    454. String column, String type) {  
    455. try {  
    456. mDb.execSQL("alter table  " + table + " add column " + column  
    457. + type + " ;");  
    458.   
    459. catch (SQLException e) {  
    460. Toast.makeText(getApplicationContext(), "数据表添加失败",  
    461. Toast.LENGTH_LONG).show();  
    462. return false;  
    463. }  
    464.   
    465. return true;  
    466. }  
    467.   
    468. // 获取表的列的名称  
    469. public String getTableColumns(SQLiteDatabase mDb) {  
    470.   
    471. Cursor c=dao.getAllData(mDb, "mytable");;  
    472. String []columns=c.getColumnNames();  
    473. String str="";  
    474. for (String s : columns) {  
    475.   
    476. str+=s+"\n";  
    477.   
    478. }  
    479.   
    480. return str;  
    481. }  
    482.   
    483. /************ 对数据库的表数据增删改查操作 ***********************/  
    484. // 添加一条数据,默认只向username和info字段添加数据  
    485.   
    486. public long insert(SQLiteDatabase mDb,String table,User user) {  
    487.   
    488. ContentValues values = new ContentValues();  
    489. values.put("username", user.getUsername());  
    490. values.put("info", user.getInfo());  
    491. return mDb.insert(table, null, values);  
    492. }  
    493.   
    494. /* 
    495. * 
    496. * 删除一条数据 
    497. */  
    498. public boolean delete(SQLiteDatabase mDb,String table,int id) {  
    499.   
    500. String whereClause =  "id=?";  
    501. String[] whereArgs = new String[] {String.valueOf(id)};  
    502. try{  
    503. mDb.delete(table, whereClause, whereArgs);  
    504. }catch (SQLException e) {  
    505. Toast.makeText(getApplicationContext(), "删除数据库失败",  
    506. Toast.LENGTH_LONG).show();  
    507. return false;  
    508. }  
    509. return true;  
    510. }  
    511.   
    512. /* 
    513. * 
    514. * 修改一条数据 
    515. */  
    516. public void update(SQLiteDatabase mDb,String table,int id,String username,String info)  
    517.  {  
    518.   
    519. ContentValues values = new ContentValues();  
    520. values.put("username", username);  
    521. values.put("info", info);  
    522. String whereClause = "id=?";  
    523. String[] whereArgs = new String[] { String.valueOf(id) };  
    524. mDb.update(table, values, whereClause, whereArgs);  
    525. }  
    526.   
    527. public Cursor queryById(SQLiteDatabase mDb,String table,int id) {  
    528.   
    529. // 第一个参数String:表名  
    530. // 第二个参数String[]:要查询的列名  
    531. // 第三个参数String:查询条件  
    532. // 第四个参数String[]:查询条件的参数  
    533. // 第五个参数String:对查询的结果进行分组  
    534. // 第六个参数String:对分组的结果进行限制  
    535. // 第七个参数String:对查询的结果进行排序  
    536. String[] columns = new String[] { "id""username""info" };  
    537. String selection = "id=?";  
    538. String[] selectionArgs = { String.valueOf(id) };  
    539. String groupBy = null;  
    540. String having = null;  
    541. String orderBy = null;  
    542. return mDb.query(table, columns, selection,  
    543. selectionArgs, groupBy, having, orderBy);  
    544. }  
    545.   
    546. public Cursor getAllData(SQLiteDatabase mDb,String table) {  
    547.   
    548. //遍历表所有数据  
    549. return mDb.rawQuery("select * from "+table, null);  
    550.   
    551. /** 如果需要返回指定的列,则执行以下语句 
    552. String[] columns = new String[] { "id","username", "info" }; 
    553. // 调用SQLiteDatabase类的query函数查询记录 
    554. return mDb.query(table, columns, null, null, null, null, 
    555. null); 
    556.  
    557. */  
    558.   
    559. }  
    560.   
    561. }  
    562.   
  • 相关阅读:
    CentOS下Docker安装ping命令
    CentenOS7 安装docker
    C++ preprocessor "/lib/cpp" fails sanity
    安装M4报错Please port gnulib freadahead.c to your platform!
    python的范式.linalg.norm,numpy tolist()的用法
    Unable to correct problems, you have held broken packages.
    tar解压时候出现tar: invalid option
    Ubuntu换源
    apt更新显示以下错误消息Err:1 http://ports.ubuntu.com xenial InRelease Temporary failure resolving ‘ports.ubunt
    Ubuntu软件操作的相关命令
  • 原文地址:https://www.cnblogs.com/Codenewbie/p/2973252.html
Copyright © 2020-2023  润新知