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.   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio中使用SQLite数据库进行增删改查的步骤如下: 1. 创建数据库Android Studio中,可以使用SQLiteOpenHelper类来创建和管理数据库。首先,需要创建一个继承自SQLiteOpenHelper的类,并实现onCreate()和onUpgrade()方法。在onCreate()方法中,可以创建数据库表和初始化数据。 2. 插入数据 使用ContentValues类来存储要插入的数据,然后使用insert()方法将数据插入到数据库中。 3. 查询数据 使用query()方法查询数据库中的数据,可以指定查询条件、排序方式等参数。查询结果会返回一个Cursor对象,可以通过Cursor对象遍历查询结果。 4. 更新数据 使用ContentValues类来存储要更新的数据,然后使用update()方法将数据更新到数据库中。 5. 删除数据 使用delete()方法删除数据库中的数据,可以指定删除条件。 以上就是Android Studio中使用SQLite数据库进行增删改查的基本步骤。 ### 回答2: SQLiteAndroid Studio中内置的轻量级关系型数据库。 它在应用程序中被广泛使用,可以轻松地进行数据位置的插入、更新、删除和查询。下面将对如何在Android Studio中增删改查SQLite数据库进行详细介绍。 1. 创建数据库Android Studio中,打开新的“Android项目”并在后台中打开SQLite数据库。 首先需要在该项目的build.gradle文件中添加以下代码: ```java implementation 'com.android.support:support-sqlite:28.0.0' ``` 随后,我们建立一个新类,并在该类中创建由SQLiteOpenHelper扩展而来的helper类。 这可以通过从SQLiteOpenHelper创建一个适当的构造函数,并覆盖其onCreate()和onUpgrade()方法来完成。完成后,在主要应用程序中实例化helper。 2. 增加数据 要添加新数据,请创建一个行对象,然后可以使用该表的insert()方法将其插入到数据库中。下面是一个示例代码: ```java SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", “John Smith”); contentValues.put("age", 23); db.insert(“mytable”, null, contentValues); ``` 其中mytable是表名,name和age是表中列名。 3. 更新数据 要更新数据,请使用Table的update()方法。要更新给定行中的具体数据,请使用ContentValues对象,该对象可以使用put()方法来指定一个新值。下面是一个示例代码: ```java SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("age", 25); db.update(“tablename”, contentValues, “id=4”, null); ``` 这将会把id值为4的行的年龄值更新为25。 4. 删除数据 要删除数据,请使用Table的delete()方法。这个方法需要一个SQL语句作为参数。例如,如果要删除表中的一个特定行,请使用以下代码: ```java SQLiteDatabase db = this.getWritableDatabase(); db.delete(“mytable”, “id=2”, null); ``` 这将删除表mytable中id为2的行。 5. 查询数据 要查询数据,请使用query()方法。该方法需要传入一个表名、要返回的列和一些可选的where、group by和having语句的参数。下面是一个示例代码: ```java SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.query(“mytable”, new String[]{“id”, “name”, “age”}, null, null, null, null, null); ``` 这会查询mytable表中的id、name和age列,并将结果存储在Cursor对象cursor中。 以上是关于如何在Android Studio中增删改查SQLite数据库的简要介绍,这个过程还可以通过使用ORM类库等其他方法来简化。 但是,以上方法是SQLite基础部分中较为重要的部分。如有不懂之处,可以查看Android Studio SQLite官方文档进行更全面的了解。 ### 回答3: 在 Android Studio 中,开发者可以使用 SQLite 数据库来存储和管理应用程序中的数据。SQLite 是一种轻量级的关系型数据库,它非常适合于移动应用程序的存储需求。在本文中,我们将介绍如何使用 Android Studio 来完成 SQLite 数据库增删改查操作。 首先,我们需要在 Android Studio 中创建一个新的 Android 项目。在项目创建的过程中,需要设置应用程序的名称、包名和所支持的最低 API 级别等信息。之后,我们需要创建一个新的数据库表,表中包含应用程序需要存储的数据。 我们可以使用 SQLiteOpenHelper 类来创建和管理数据库SQLiteOpenHelper 类提供了一些方法来帮助我们处理 SQLite 数据库的创建和更新。在创建一个 SQLiteOpenHelper 对象时,我们需要提供数据库名称、版本号和表的结构。 接下来,我们将介绍如何使用 SQLiteDatabase 类来完成增删改查操作。SQLiteDatabase 类提供了一些方法来帮助我们对数据库进行操作。 1. 增加数据 使用 insert() 方法可以向数据库表中插入一行数据。insert() 方法需要传入表名、要插入的数据和一个选项参数。以下是一个示例: SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", "Tom"); values.put("age", 18); db.insert("students", null, values); 2. 删除数据 使用 delete() 方法可以从数据库表中删除一行或多行数据。delete() 方法需要传入表名和一个选择字符串来限制删除范围。以下是一个示例: SQLiteDatabase db = dbHelper.getWritableDatabase(); db.delete("students", "name=?", new String[]{"Tom"}); 3. 修改数据 使用 update() 方法可以修改数据库表中的一行或多行数据。update() 方法需要传入表名、要修改的数据和一个选择字符串来限制修改范围。以下是一个示例: SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("age", 20); db.update("students", values, "name=?", new String[]{"Tom"}); 4. 查询数据 使用 query() 方法可以从数据库表中查询一行或多行数据。query() 方法需要传入表名、要查询的列、一个选择字符串和一个排序字符串。以下是一个示例: SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("students", new String[]{"name", "age"}, "age=?", new String[]{"20"}, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); Log.d(TAG, "name:" + name + ", age:" + age); } cursor.close(); } 在使用 SQLite 数据库过程中,我们需要注意一些事项。比如,我们需要保证数据库的打开和关闭操作是成对出现的,以避免资源的浪费;我们还需要注意表名、列名和选择字符串等信息的正确性,否则会导致数据操作失败。此外,还应该使用事务来保证数据库操作的正确性和一致性。 总之,使用 Android Studio 的 SQLite 数据库功能可以帮助我们方便地管理应用程序中的数据。通过学习 SQLite 数据库增删改查操作,我们可以更好地开发出高质量、稳定性的移动应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值