アプリ開発初心者です。DBに登録したデータを検索するアプリを参考書とうりに作ったのですがボタンをクリックするとERRORになってしまいます。どこが間違っているのでしょうか?ご回答よろしくお願いします
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
private SQLiteDatabase dbObject; private String dbName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //データベース名と保存場所を登録 dbName = "data/data/" + getPackageName() + "/myDatabase1.db"; findViewById(R.id.button1).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { //データベースオブジェクトを作成 dbObject = SQLiteDatabase.openOrCreateDatabase(dbName, null); //古いテーブルを破壊するSQL文を登録 String dropTable = "DROP TABLE IF EXISTS namelist "; //3つのカラムを持つテーブルを作成するSQL文を登録 String createTable = "CREATE TABLE namelist " + "(id INTEGER PRIMARY KEY, name STRING, point INTEGER)"; //データベースを追加するSQL文を登録 String[] insertData = { "INSERT INTP namelist(name, point) VALUES ('山極一生', 1997)", "INSERT INTP namelist(name, point) VALUES ('山極二生', 1998)", "INSERT INTP namelist(name, point) VALUES ('山極三生', 1999)", "INSERT INTP namelist(name, point) VALUES ('山極四生', 2000)", "INSERT INTP namelist(name, point) VALUES ('山極五生', 2001)", "INSERT INTP namelist(name, point) VALUES ('山極六生', 2002)" }; //古いテーブルを破棄 dbObject.execSQL(dropTable); //テーブルを作成 dbObject.execSQL(createTable); //データを追加 for (int i=0; i < insertData.length; i++){ dbObject.execSQL(insertData[i]); } //データベースオブジェクトをクローズ dbObject.close(); } } ); findViewById(R.id.button2).setOnClickListener( new View.OnClickListener(){ ArrayAdapter<String> ad; @Override public void onClick(View v){ //データベースオブジェクトの作成 dbObject = SQLiteDatabase.openOrCreateDatabase(dbName, null); EditText ed = (EditText)findViewById(R.id.editText2); String num = ed.getText().toString(); //検索を行うSQL文を登録 String query = "SERECT * FROM namelist WHERE point >=" + num; try{ Cursor cursor = dbObject.rawQuery(query, null); //ArrayListのインスタンスを作成 ArrayAdapter<String> ad = new ArrayAdapter<String>( MainActivity.this, android.R.layout.simple_list_item_1 ); while (cursor.moveToNext()){ //各カラムのidを取得 int idId = cursor.getColumnIndex("id"); int idName = cursor.getColumnIndex("name"); int idPoint = cursor.getColumnIndex("point"); int id = cursor.getInt(idId); int point = cursor.getInt(idPoint); String name = cursor.getString(idName); String row = id + ":" + name + ":" + point + "ポイント"; ad.add(row); } }catch (Exception e){ //データベースオブジェクトをクローズ dbObject.close(); showDialog( MainActivity.this, " ERROR ", " データの読み込みに失敗しました "); } ((ListView) findViewById(R.id.listView)).setAdapter(ad); //データベースをクローズ dbObject.close(); } }); } //ダイアログを表示するメソッドの定義 private static void showDialog( Context context, String title, String text ){ AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); alertDialog.setTitle(title); alertDialog.setMessage(text); alertDialog.setPositiveButton("OK",null); alertDialog.show(); }
}
回答1件
あなたの回答
tips
プレビュー