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"); }
}
主要是查询的问题~ 创建数据库、创建表、插入数据应该是成功了的,但是查询却一直查不到结果~~
或许是我查询的方法不对?
望大牛指点…… 不胜感激!
解决方案 »
- 为grallery添加baseadapter监听时出现空指针,该怎么改?求解?
- 坐等大神讲解android opengl 绘图透明度的问题。
- 求助 android的listview控件的OnScrollListener的firstVisibleItem在滑动太快的时候监听不到 是因为什么原因
- using WindowsPhoneNavigation.Misc;
- 怎样显示assets目录下的pdf文件
- SQLiteDatabase报错。。。
- 【急!!高分求思路】Java应用与其链接的C库之间的通信
- 请问一个android权限异常问题
- 请问,很多帖子说的在Android源码下编译是什么意思?
- 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等进行数据库操作的时候,是必须的。否则有些功能方法无法使用