最近刚开始学习android,学习到SQLite的存储时,看着官方关于SQLite的使用的文档,硬是没看懂前面的FeedEntry和FeedReaderContract部分(如果那位看懂了,给小弟说一下,最好有源代码),自己结合官方剩下的部分实现了简单的表的创建、添加和查询。
1. FeedReaerDbHelper继承SQliteOpenHelper类(系统提供帮助管理SQLite数据库的系统类),重写了构造函数和OnCreat函数。
publicclass FeedReaderDbHelper extends SQLiteOpenHelper {
publicstaticfinalintDATABASE_VERSION=1;
publicstaticfinal String DATABASE_NAME="person.db";
public FeedReaderDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION); //重写了FeedReaderDbhelper构造函数
// TODO Auto-generated constructor stub
}
@Override
//第一次访问或者创建数据库的调用该方法
publicvoid onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE person (_ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,AGE INTEGER )"); //创建了person表
// Log.w("onCreate", "Create database sucessed!!");
}
@Override
publicvoid onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub //
}
}
2. MainActivity中实现对SQLite数据库插入和查询;
1. publicclass MainActivity extends Activity {
2. private EditText nameEdit;
3. private EditText ageEdit;
4. private Button insertBtn;
5. private Button queryBtn;
6. private TextView queryList;
7. @Override
8. protectedvoid onCreate(Bundle savedInstanceState) {
9. super.onCreate(savedInstanceState);
10. setContentView(R.layout.activity_main);
11. setView(); //类和控件的绑定
12. setListener();//设置button控件的监控函数
13. }
14. privatevoid setView()
15. {
16. nameEdit=(EditText)findViewById(R.id.name);
17. ageEdit=(EditText)findViewById(R.id.age);
18. queryList=(TextView)findViewById(R.id.queryList);
19. insertBtn=(Button)findViewById(R.id.insert);
20. queryBtn=(Button)findViewById(R.id.query);
21. }
22.
23. privatevoid setListener()
24. {
25. insertBtn.setOnClickListener(new OnClickListener() {
26.
27. @Override
28. publicvoid onClick(View v) {
29. queryList.setText("");
30. // TODO Auto-generated method stub
31. FeedReaderDbHelper mBbHelper=new FeedReaderDbHelper(MainActivity.this);
32. //创建一个FeedReaderDbhelper对象,向其传入当前上下文信息;
33. SQLiteDatabase db=mBbHelper.getWritableDatabase();
34. //以写方式获得SQLiteDatabase数据库对象
35. ContentValues cv=new ContentValues();
36. //ContentValues类似一种储存机制
37. cv.put("name", nameEdit.getText().toString());
38. cv.put("age", Integer.parseInt(ageEdit.getText().toString()));
39. db.insert("person", null, cv); //向数据库中插入数据
40. // Log.w("insert", "name"+nameEdit.getText().toString()+" age"+ageEdit.getText().toString());
41. db.close();
42. nameEdit.setText("");
43. ageEdit.setText("");
44. }
45. });
46. queryBtn.setOnClickListener(new OnClickListener() {
47.
48. @Override
49. publicvoid onClick(View v) {
50. // TODO Auto-generated method stub
51. queryList.setText("");
52. FeedReaderDbHelper mbDbHelper=new FeedReaderDbHelper(MainActivity.this);
53. SQLiteDatabase db=mbDbHelper.getReadableDatabase();
54. //Log.w("db", "Create!!");
55. Cursor cursor=db.rawQuery("SELECT * FROM person WHERE name=? and age=?", new String[]{nameEdit.getText().toString(),ageEdit.getText().toString()});
//SQLite的SQL查询语句,查询数据库中数据与当前的nameEdit和AgeEdit值相等的数据项
56. //Log.w("Select", "select has finished!!");
57. if(cursor.moveToNext())
58. {
59. queryList.setText("Query exits!!"); //如果在数据库中select成功,游标执行moveToNext函数,cursor指向符合条件的第一条数据项,返回值为true,否则false;
60. }
61. else {
62. queryList.setText("Query doesn't exited!!");
63. }
64. }
65. });
66.
67. }
68.
69. @Override
70. publicboolean onCreateOptionsMenu(Menu menu) {
71. // Inflate the menu; this adds items to the action bar if it is present.
72. getMenuInflater().inflate(R.menu.main, menu);
73. returntrue;
74. }
}
3. 存在的问题:
在进行Relativelayout排版时出现,在XML中把对应的insertButton和queryButton的位时,其他不变,点击insertButton按钮确实现queryButton的功能,自己觉得和R.java中有关,具体原因不知道,希望各位各种拍砖,自己是初学者,有什么错误,望各位指出和交流。