我要做的是:将我的单词.txt(保存在res/raw/words.txt中)中的单词插入到我的数据库中。单词.txt文件如下所示:
commission
camera
mouse
每行一个字。
问题似乎出在fillDB方法中,因为我的Logo. d能够在logcat中注册。尽管如此,我仍然发布了我的整个DBHelper.java,以防错误不存在:
public class DBHelper extends SQLiteOpenHelper {
私有静态最终字符串 TAG = “WordDatabase”;
//Table names;
public static final String T_NAME = "WORDS";
public static final String T2_NAME = "SCORE";
//Column names
public static final String C_WKEYS = "Word Keys";
public static final String C_WORDS = "List of Words";
public static final String C_SKEYS = "Score Keys";
public static final String C_SCORE = "Score";
//Database info
public static final String DB_NAME = "letterhunter.db";
public static final int DB_VERSION = 1;
private final Context context;
private SQLiteDatabase db;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.context = context;
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql = String.format("create table %s " + "(%s integer primary key, %s text)" , T_NAME, C_WKEYS, C_WORDS);
Log.d (TAG , "create sql "+sql);
db.execSQL(sql);
fillDB();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("drop if exists " + T_NAME);
onCreate(db);
}
private void fillDB(){
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
loadWords();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
private void loadWords() throws IOException{
Resources resources = context.getResources();
InputStream is = resources.openRawResource(R.raw.words);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
Log.d("here", "baby");
String word;
try {
while((word=br.readLine()) != null){
ContentValues values = new ContentValues();
values.put(C_WKEYS, 0);
values.put(C_WORDS, word);
db.insert(T_NAME, null, values);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
br.close();
is.close();
}
}
logcat如下所示:
04-29 18:29:33.748: D/WordDatabase(899): create sql create table WORDS (Word Keys integer primary key, List of Words text)
04-29 18:29:33.748: D/here(899): baby
04-29 18:29:33.748: W/dalvikvm(899): threadid=11: thread exiting with uncaught exception (group=0x4161c8b0)
04-29 18:29:33.758: E/AndroidRuntime(899): FATAL EXCEPTION: Thread-12681
04-29 18:29:33.758: E/AndroidRuntime(899): java.lang.NullPointerException
04-29 18:29:33.758: E/AndroidRuntime(899): at com.johnyeung.letterhunter.DBHelper.loadWords(DBHelper.java:90)
04-29 18:29:33.758: E/AndroidRuntime(899): at com.johnyeung.letterhunter.DBHelper.access$0(DBHelper.java:78)
04-29 18:29:33.758: E/AndroidRuntime(899): at com.johnyeung.letterhunter.DBHelper$1.run(DBHelper.java:67)
04-29 18:29:33.758: E/AndroidRuntime(899): at java.lang.Thread.run(Thread.java:841)
04-29 18:29:33.808: D/libEGL(899): loaded /vendor/lib/egl/libEGL_adreno.so
04-29 18:29:33.818: D/libEGL(899): loaded /vendor/lib/egl/libGLESv1_CM_adreno.so
04-29 18:29:33.818: D/libEGL(899): loaded /vendor/lib/egl/libGLESv2_adreno.so
04-29 18:29:33.818: I/Adreno-EGL(899): <qeglDrvAPI_eglInitialize:316>: EGL 1.4 QUALCOMM build: (CL4169980)
04-29 18:29:33.818: I/Adreno-EGL(899): OpenGL ES Shader Compiler Version: 17.01.10.SPL
04-29 18:29:33.818: I/Adreno-EGL(899): Build Date: 12/01/13 Sun
04-29 18:29:33.818: I/Adreno-EGL(899): Local Branch:
04-29 18:29:33.818: I/Adreno-EGL(899): Remote Branch:
04-29 18:29:33.818: I/Adreno-EGL(899): Local Patches:
04-29 18:29:33.818: I/Adreno-EGL(899): Reconstruct Branch:
04-29 18:29:33.868: D/OpenGLRenderer(899): Enabling debug mode 0
04-29 18:34:33.801: I/Process(899): Sending signal. PID: 899 SIG: 9
正如@laalto所说-使用< code > getWritableDatabase()
我在适用于数据库的方法中使用它,就像在您的代码中一样:
private void loadWords() throws IOException{
Resources resources = context.getResources();
InputStream is = resources.openRawResource(R.raw.words);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
Log.d("here", "baby");
String word;
try {
//add here:
db.getWritableDatabase(); //this opens and(if necessary) creates your DB
while((word=br.readLine()) != null){
ContentValues values = new ContentValues();
values.put(C_WKEYS, 0);
values.put(C_WORDS, word);
db.insert(T_NAME, null, values);
}
//add that too:
db.close(); //you should close your DB, when you don't need it for this moment
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
br.close();
is.close();
}
您尚未初始化私有SQLiteDatabase数据库
loadWords()
中使用的code>成员变量。
使用 getWritableDatabase()
在线程中初始化它。不要在 onCreate
() 或 onUpgrade()
调用的方法中调用 getWritableDatase(),
因为这不起作用。
我有以下代码。 然而,它没有捕捉到所有的错误,我仍然得到“throw er//未处理的“错误”事件。 这是为什么呢? 例如,直到我添加了一个特定的错误处理程序,它才捕获parse()函数中的错误。即使不添加,我的try/catch是否应该捕获此错误? 提前致谢!
我有一个存储过程似乎没有正确记录错误。 代码有错误,但 catch 块似乎未生效。 try块相当长,但错误部分很简单,并且在最后出现,所以我已经对此进行了预测。 proc失败的错误是我们的老朋友“列名或提供的值的数量与表定义不匹配”。我已经修复了这个错误 - 这是一个愚蠢的懒惰错误 - 但我感到困惑为什么我的错误日志记录过程似乎没有工作 - 没有行入到我的 ExtractsErrorLog 表中。
Twilio新手使用测试帐户。我按照这里列出的安装Twilio PHP的说明进行了安装:https://www.Twilio.com/docs/quickstart/php/sms 因为我得到了一个证书错误,所以我的主机提供程序建议我更改CURLOPT_SSL_VERIFYPEER=>false(从true改为true)。但现在我得到了这个错误。如何修复?:致命错误:未捕获异常“services_
问题内容: 我知道可可中有一个UncaughtExceptionHandler,但是我正在为Swift寻找相同的东西。即,每当应用程序中有任何错误/异常由于任何错误而未在本地捕获时,它应该一直冒泡到顶级应用程序对象,在那里我应该能够妥善处理它并适当地响应用户。 Android有它。Flex有它。Java有它。想知道为什么Swift缺少此关键功能。 问题答案: Swift没有机制来捕获所有任意的运行
我的用它的作用域启动coroutine 我的只处理一些逻辑,在本例中是某种验证器 然后我的只处理网络层/本地层 以下是我得到的错误日志: 错误直接指向显式的语句。
我的RMI服务器接口声明了一个方法foo(),该方法被声明为引发RemoteException和Exception,如下所示: 服务器实现为: 我的客户端在服务器上调用foo: 现在,当我运行客户端时,我得到: 从java类型的foo()中获取异常。rmi。异常异常:未声明的检查异常;嵌套的例外是:java。伊奥。InterruptedIOException:操作超时 Java文档是这样说的。rm