关于android数据库的一个问题

梦不到热爱不褪 2015-05-12 10:45:12
这是一个关于android数据库的问题
1.我新建了一个DataBaseOpenHelper类继承了SQLiteOpenHelper:
package com.example.database;

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DataBaseOpenHelper extends SQLiteOpenHelper {
private final static String DATABASE_NAME="myDb.db";
private final String TABLE_NAME="person";
private final static int VERSION=1;
private Context context;
private Cursor cursor;
public DataBaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null, VERSION);
this.context=context;
this.cursor=cursor;
}

@Override
public void onCreate(SQLiteDatabase db) {
String sql="create "+TABLE_NAME+"(_id integer primary key autoincrement,name varchar(30),address varchar(30))";
try{
db.execSQL(sql);
}catch(SQLException e){
e.printStackTrace();
}
}

@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub

}

}
2.然后新建一个测试类MyDataBase继承了AndroidTestCase:
package com.example.mydatabase;

import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.test.AndroidTestCase;
import android.util.Log;

import com.example.database.DataBaseOpenHelper;

public class MyDataBase extends AndroidTestCase {
private final String TABLE_NAME = "person";

public void insert() {
DataBaseOpenHelper mOpenHelper = new DataBaseOpenHelper(getContext());
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
String sql1 = "insert into " + TABLE_NAME
+ "(_id,name,address) values('1','lisi','成都')";
String sql2 = "insert into " + TABLE_NAME
+ "(_id,name,address) values('2','zhangsan','巴中')";
String sql3 = "insert into " + TABLE_NAME
+ "(_id,name,address) values('3','wangwu','重庆')";
try {
//执行sql语句,将数据插入person表
db.execSQL(sql1);
db.execSQL(sql2);
db.execSQL(sql3);
// db.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

public void Query() {
DataBaseOpenHelper mOpenHelper = new DataBaseOpenHelper(getContext());
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
try {
Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null,
null);
int _id=cursor.getColumnIndex("_id");
int name=cursor.getColumnIndex("name");
int address=cursor.getColumnIndex("address");

for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
int ID=cursor.getInt(_id);
String Name=cursor.getString(name);
String Address=cursor.getString(address);
Log.i("Query",ID+" "+Name+" "+Address);
}
} catch (SQLiteException e) {
e.printStackTrace();
}
}

}
3.问题A:
我在单元测试insert()方法时,是通过的,这时,我导出了这个myDb.db数据库文件,发现里面并没有插入数据的person表,为什么没有该表却未报异常。
问题B:
我在执行Query()方法的时候,他却报了错误,错误日志里面说的是:未找到person表。
...全文
142 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
装作睡不着 2015-05-13
  • 打赏
  • 举报
回复
这是正常现象吧,insert返回值可以判断插入是否成功,失败了不会报异常。查询没有该表才是异常。

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧