-3
    tv=(TextView)findViewById(R.id.textView1);
    SQLiteDatabase sqLiteDatabase = SQLiteDatabase.openOrCreateDatabase("/sdcard/assets.db", null);
    Cursor c=sqLiteDatabase.rawQuery("select datetime('now')", null);       
    if(c.moveToFirst()){
            tv.setText(c.getString(0));
    }
    tv.setText("1234");
    c.close();
    sqLiteDatabase.close();

SQLiteデータベースを操作して現在の日付を取得し、textView に日付を表​​示するために、このコードを作成しました。コードを実行すると、エラーは表示されませんが、最終結果は、SQL 状態select datetime('now')が現在の日付を返さなかったことを示しています。textView には「1234」が表示されましたが、日付は表示されませんでした。

コードの何が問題なのか、またはこのメソッドが間違っているのか教えてください。ps Java カレンダーを使用して日付を取得する方法を知っています。この質問は、SQLite データベースにクエリを実行して日付を直接取得できるかどうかのみを尋ねられます。

手伝ってくれてありがとう。

4

4 に答える 4

0

ifの後に他の表現がない場合、これがあなたの問題です。

これを試して:

    tv=(TextView)findViewById(R.id.textView1);
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = null;
    try{ 
        cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list or get object
        if (cursor.moveToFirst()) {
            do {
                tv.setText(c.getString(0));
            } while (cursor.moveToNext());
        }
        else{
                tv.setText("1234");
        }
    }
    catch (Exception e) {

    }
    finally{
        if(cursor != null)
            cursor.close();
        if(!db.equals(null) || db != null)
            db.close();
    }
于 2012-12-29T14:37:02.793 に答える
0

日付を処理するには、次のことを試してください

SQLiteテーブルにファイルされる日付はTEXTになり、日付データは「2012-12-31 00:12:00」形式で保存する必要があります。これにより、比較しても問題は発生しません。フィールドがdate_fromとdate_toであると見なすと、保存されます。 to_dateの現在の日付の場合、次のように現在の日付を取得する必要があります。

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String to_date = sdf.format(new Date());

SQLクエリは

crs = db.rawQuery(
  "SELECT _id, date_from, date_to, done_or_not, list_name " +
  "FROM list_tbl " +
  "WHERE " +
  "date_from <= Datetime('"+to_date+"') AND date_to >= Datetime('"+to_date+"')", null);
于 2012-12-31T17:32:50.970 に答える
0

コードを次のように変更します。

if(c.getCount() >0)

  c.moveToFirst();

  tv.setText(c.getString(0));

 }
 else{
     tv.setText("1234"); 
  }
    c.close();
    sqLiteDatabase.close();

last tv.setTextを else の中に入れます。

于 2012-12-29T14:09:59.597 に答える
0

それは冗談ですか?テキストビューで日付を設定した後、テキストビューで 1234 を書き換えます。日付が表示されないのは正常です。

于 2012-12-29T14:18:14.470 に答える