您的位置:首页 > 移动开发 > Android开发

Android 中SQlite数据中简单示例的表的创建、插入和查询

2013-04-10 22:54 555 查看
           最近刚开始学习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中有关,具体原因不知道,希望各位各种拍砖,自己是初学者,有什么错误,望各位指出和交流。

4.代码:http://download.csdn.net/detail/fishintheair/5244395
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQLite
相关文章推荐