プログラムというものは本当に融通が利かない
例えば、" "と" "や"0"と"O"の違いがわかるだろうか
全角のスペースと半角のスペース、数字のゼロとアルファベット「オー」の大文字
など等、それだけが出された場合は「そんなの簡単じゃん」とか思う人もいるだろう
ならばこれならどうだろうか
(gooブログはどうやらTabキーでは文字が移動しない)
―――――――――――――――――――――1つ目―――――――――――――――――――――――
@Override
public void onCreate(SQLiteDatabase db) {
//データベース処理開始
db.beginTransaction();
try{
//テーブル作成を実行
db.execSQL("CREATE TABLE " + TABLE_DIARY
+ " ("
+ BaseColumns._ID + "INTEGER PRIMARY KEY AUTOINCREMENT,"
+ FIELD_DATE + " LONG UNIQUE,"
+ FIELD_CONTENTS + " TEXT" + "); ");
//SQL処理を反映
db.setTransactionSuccessful();
} finally {
//データベース処理終了
db.endTransaction();
}
}//onCreate
―――――――――――――――――――――2つ目―――――――――――――――――――――――
@Override
public void onCreate(SQLiteDatabase db) {
//データベース処理開始
db.beginTransaction();
try{
//テーブル作成を実行
db.execSQL("CREATE TABLE " + TABLE_DIARY
+ " ("
+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ FIELD_DATE + " LONG UNIQUE,"
+ FIELD_CONTENTS + " TEXT" + "); ");
//SQL処理を反映
db.setTransactionSuccessful();
} finally {
//データベース処理終了
db.endTransaction();
}
}//onCreate
―――――――――――――――――――――――――――――――――――――――――――――――――
さて、上と下の違いが分かる人はいるだろうか
ちなみにこの時点ではエラーは出ない、構文的には何も間違っていない
しかし、いざこれを実行してみると強制終了でアプリが終了させられるのだ
正解は「+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"」の部分のINTEGERの手前にスペースがあるか無いか、それだけ
この辺が怪しいということが分かっていたのでこのバグを見つけるのに10分ぐらいで済んだものの
この手の「エラーではないバグ」というのが本当に強敵
俺の場合最初に勉強してたときは先生がいたのでその度に少しずつ聞けたので何とか今でも勘が働くが
独学で勉強してる人はいきなり解決はできないと思う
ネットで調べようにも、あまりにも細かすぎる内容だと解決策が見つからない場合もあるし
プログラムっちゅうもんはほんまに、、、、
プログラムやってるとまだ人間関係のほうが簡単な気がするわw
まープログラム暦はたかが2~3年、人間関係歴はもうじき26年になるんですけどね