0

ボタン(保存)のonclickメソッドでデータベースとテーブルを作成します。保存ボタンをクリックすると、データベースとテーブルが作成されます。出力用に5つの編集テキストを取得できます。このプログラムでは、ユーザーは値を入力できません。たとえば、タイマー制御。タイマーアプリケーションでは、ユーザーが開始ボタンを押してからカウントダウンタイマーが開始され、停止ボタンを押して値が停止し、保存ボタンを押すとその値がデータベースに保存されます。保存ボタンでデータベースとテーブルを作成できます。ユーザーがデータベースに入力した値とは異なる outout 値を挿入するための提案とコードを教えてください。私のコードは次のとおりです。

コード:


btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
        Intent intent =new Intent(Timedetails.this,ListActivity.class); 
        Toast.makeText(getApplicationContext(), "Project has been added to List", 1).show();
        startActivity(intent);
            try{

                        SQLiteDatabase db;
                db = openOrCreateDatabase("timer", MODE_PRIVATE, null);
                db.execSQL("create table timerdetail("
                        + "project_id integer PRIMARY KEY autoincrement,"
                        + "name text,"
                        + "Timerpoint1 text,"
                        + "Timerpoint2 text,"
                        + "Timerpoint3 text,"
                        + "ServiceTime1 text,"
                        + "ServiceTime2 text);");
                Toast.makeText(getApplicationContext(), "Table is created", 1).show();


            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
4

1 に答える 1

0

挿入するコード:

ContentValues cvTimerDtl = new ContentValues();
cvTimerDtl.put("name", name);
cvTimerDtl.put("Timerpoint1", tPoint1);
cvTimerDtl.put("Timerpoint2", tPoint2);
cvTimerDtl.put("Timerpoint3", tPoint3);
cvTimerDtl.put("ServiceTime1", sTime1);
cvTimerDtl.put("ServiceTime2", sTime2);
db.insert("timerdetail",  null, cvTimerDtl);

編集:うまくいくと思います。しかし、まだ別のコードを投稿しています:

String query = "INSERT INTO timerdetail (name, Timerpoint1, Timerpoint2, Timerpoint3, ServiceTime1, ServiceTime2) VALUES ('"
                + name + "', '" + tPoint1 + "', '" + tPoint2 + "', '" + tPoint3 + "', '" + sTime1 + "', '" + sTime2 + "');";

db.execSQL(query);

編集:

onClick コードが最初にインテントを開始し、次にデータベースにデータを挿入しようとします。次のように変更します。

@Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                try{
                    db = SQLiteDatabase.openDatabase("data/data/com.example.timerdemo2/timer", null, SQLiteDatabase.CREATE_IF_NECESSARY);

                    //db = openOrCreateDatabase("timer", MODE_PRIVATE, null);
                    db.execSQL("create table timerdetail("
                            + "project_id integer PRIMARY KEY autoincrement,"
                            + "name text,"
                            + "Timerpoint1 text,"
                            + "Timerpoint2 text,"
                            + "Timerpoint3 text,"
                            + "ServiceTime1 text,"
                            + "ServiceTime2 text);");

                    Toast.makeText(getApplicationContext(), "Table is created", 1).show();

            //      db.execSQL("insert into timerdetail(name,tmpoint1,tmpoint2,tmpoint3,servicetime1,servicetime2) values ();");
    /*              ContentValues cv = new ContentValues();
                    //cv.put("name", eta.getText().toString());
                    cv.put("timing_point1", eta.getText().toString());
                    cv.put("timing_point2", etb.getText().toString());
                    cv.put("timing_point3", etc.getText().toString());
                    int rowposition = (int) db.insert("timerdetail", null, cv);     */
                    addRecord();

                }
                catch(Exception e){
                    e.printStackTrace();
                }
            Intent intent =new Intent(Timedetails.this,ListActivity.class); 
            Toast.makeText(getApplicationContext(), "Project has been added to List", 1).show();
            startActivity(intent);
            }

編集:

変化する

db.execSQL("create table timerdetail("
                            + "project_id integer PRIMARY KEY autoincrement,"
                            + "name text,"
                            + "Timerpoint1 text,"
                            + "Timerpoint2 text,"
                            + "Timerpoint3 text,"
                            + "ServiceTime1 text,"
                            + "ServiceTime2 text);");

db.execSQL("create table IF NOT EXISTS timerdetail("
                            + "project_id integer PRIMARY KEY autoincrement,"
                            + "name text,"
                            + "Timerpoint1 text,"
                            + "Timerpoint2 text,"
                            + "Timerpoint3 text,"
                            + "ServiceTime1 text,"
                            + "ServiceTime2 text);");

したがって、テーブルが既に存在する場合、テーブルは作成されません。

編集:

x 個の列を配置する場合、コンテンツ値にはその数のキーと値のペアが含まれます。したがって、データベースにもタイトルを追加したい場合。コンテンツの値を次のように変更します

ContentValues cvTimerDtl = new ContentValues();

cvTimerDtl.put("title", title);
cvTimerDtl.put("name", name);
cvTimerDtl.put("Timerpoint1", tPoint1);
cvTimerDtl.put("Timerpoint2", tPoint2);
cvTimerDtl.put("Timerpoint3", tPoint3);
cvTimerDtl.put("ServiceTime1", sTime1);
cvTimerDtl.put("ServiceTime2", sTime2);
db.insert("timerdetail",  null, cvTimerDtl);
于 2012-12-27T09:33:46.810 に答える