android的数据库练习,根据资料写下了如下代码,但是却一直不成功:package barry.android.db;import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursorDriver;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteQuery;
import android.os.Bundle;public class Demo03Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); /*创建数据库*/
SQLiteDatabase myDB = this.openOrCreateDatabase("db.db",
MODE_PRIVATE, new CursorFactory() {
@Override
public Cursor newCursor(SQLiteDatabase db,
SQLiteCursorDriver masterQuery, String editTable,
SQLiteQuery query) {
return null;
}
});
/*创建表*/
String createTableSql = "CREATE TABLE test(_idd INTEGER primary key autoincrement, number text)";
myDB.execSQL(createTableSql);
/*插入数据*/
String insertDataSql = "INSERT INTO test(_idd,number) VALUES(1,678)";
myDB.execSQL(insertDataSql);
/*查询*/
Cursor cursor = myDB.rawQuery("SELECT * FROM test", null);
if(cursor==null){
System.out.println("NULLLLLLLLLLLLLLLLLL");
}else{
if(cursor.moveToFirst()){
System.out.println(cursor.toString());
System.out.println(cursor.getInt(0));
}
}
/*删除数据库*/
this.deleteDatabase("db.db"); }
}
主要是查询的问题~ 创建数据库、创建表、插入数据应该是成功了的,但是查询却一直查不到结果~~
或许是我查询的方法不对?
望大牛指点…… 不胜感激!
解决方案 »
- listView分页遇到一个诡异问题
- android 如何访问设备自带内存?(internal memory)
- aidl服务的安全性问题
- android 不可以自己创建资源目录吗?
- context.getAssets().list("")方法的问题
- Android中字体大小的计算
- 请教大家,关于contacts2.db 中一些table的访问
- eclipse DDMS 的GPS模拟为什么不能选。。
- 源推荐:《Android应用程序开发与典型案例》图书下载
- mac10.10中eclipse运行android项目识别不了设备。
- Android新手有没有正在看mars的Android开发视频教程的?xml解析那一节有个不明白的地方?
- android开发邮件客户端
而且我把最后删除数据库的语句去掉时,再运行程序,会提示我“表已存在”或者“该字段主键已存在~”,说明插入是成功的,只是查询出了问题……
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class AndroidsqlitedbActivity extends Activity {
/** Called when the activity is first created. */
private Button create;
private Button insert;
private Button update;
private Button query;
private Button delete;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
create = (Button)findViewById(R.id.create);
insert = (Button)findViewById(R.id.insert);
update = (Button)findViewById(R.id.update);
query = (Button)findViewById(R.id.query);
delete = (Button)findViewById(R.id.delete);
create.setOnClickListener(new CreateListener());
insert.setOnClickListener(new InsertListener());
update.setOnClickListener(new UpdateListener());
query.setOnClickListener(new QueryListener());
delete.setOnClickListener(new DeleteListener());
}
@Override
protected void onDestroy() {
super.onDestroy();
//释放和数据库的连接
// db.close(); }
/**
* 创建数据库
* @author Owner
*
*/
class CreateListener implements OnClickListener { @Override
public void onClick(View v) {
DatabaseHelper dbHelper = new DatabaseHelper(AndroidsqlitedbActivity.this, "test_sqlite_db");
dbHelper.getReadableDatabase();
}
}
/**
* 插入一条记录
* @author Owner
*
*/
class InsertListener implements OnClickListener { @Override
public void onClick(View v) {
DatabaseHelper dbHelper = new DatabaseHelper(AndroidsqlitedbActivity.this, "test_sqlite_db");
ContentValues values = new ContentValues();
values.put("id", 1);
values.put("name", "LiXiaoLong");
values.put("password", "12345");
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.insert("user", null, values);
}
}
/**
* 更新一条记录
* @author Owner
*
*/
class UpdateListener implements OnClickListener { @Override
public void onClick(View v) {
ContentValues values = new ContentValues();
values.put("name", "ZhangXiaoLong");
DatabaseHelper dbHelper = new DatabaseHelper(AndroidsqlitedbActivity.this, "test_sqlite_db");
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.update("user", values, "id=?", new String[]{"1"});
}
}
/**
* 查询记录
* @author Owner
*
*/
class QueryListener implements OnClickListener { @Override
public void onClick(View v) {
DatabaseHelper dbHelper = new DatabaseHelper(AndroidsqlitedbActivity.this, "test_sqlite_db");
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("user", new String[]{"id","name","password"}, "id=?", new String[]{"1"}, null,null,null);
while(cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
String password = cursor.getString(cursor.getColumnIndex("password"));
System.out.println(" name: " + name + "password: " + password);
}
}
}
/**
* 查询一条记录
* @author Owner
*
*/
class DeleteListener implements OnClickListener { @Override
public void onClick(View v) {
DatabaseHelper dbHelper = new DatabaseHelper(AndroidsqlitedbActivity.this, "test_sqlite_db");
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("user", "id=?", new String[]{"1"});
}
}
}
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHelper extends SQLiteOpenHelper {
public static final int VERSION = 1; public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {
super(context, name, factory, version);
} public DatabaseHelper(Context context,String name,int version) {
this(context,name,null,version);
}
public DatabaseHelper(Context context,String name) {
this(context,name,VERSION);
}
/**
* 在调用下面方法时 getWritableDatabase(),
* getReadableDatabase() 调用该方法
*/
@Override
public void onCreate(SQLiteDatabase sqlitedb) {
System.out.println("create database");
sqlitedb.execSQL("create table user(id int,name varchar(20),password varchar(20))");
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("update database");
}}
但是我的表中没用_id字段,你去顶必须有这个主键么? 或者是如果没有显示指定的话它会默认自动生成一个_id?
但是用adaper等进行数据库操作的时候,是必须的。否则有些功能方法无法使用