0

こんにちは、最初に2つのレコードを挿入したAndroidでSQLiteデータベースを作成しましたが、実行時にデータが挿入されずデータベースが空であると表示されます.誰かがデータを挿入するのを手伝ってくれますか?

以下のデータベースクラスを与える

          public class DummyDatabase extends SQLiteOpenHelper{



   public static final int NAME_COLUMN=2;

   static final String DATABASE_NAME = "NestDatabase.db";
  static final int DATABASE_VERSION = 1;
  static final String tableName="Employees";
  static final String DATABASE_CREATE = "create table      "   
           +           "  Employees  "+ " " + "  "
           +       "    (     "    
           +     "   ID   "  
           +     "     integer      primary key autoincrement ,    "   
           +      "             NAME            text     , 
             EMPLOYEE_CODE    text," 
           +      "    MOBILE_NUMBER    integer  ); ";



  public SQLiteDatabase db;
  private final Context context;
  public DataBaseHelper1 dbHelper;

  public DummyDatabase(Context _context) {
        super(_context,DATABASE_NAME, null,DATABASE_VERSION);
        // TODO Auto-generated constructor stub
        context=_context;
        dbHelper=new DataBaseHelper1(_context,DATABASE_NAME, 
          null,DATABASE_VERSION);
    }


  public DummyDatabase open() throws SQLException
    {
        db=dbHelper.getWritableDatabase();
        return this;
    }

    public void close()
    {
        db.close();
    }

    public int deleteEntry(String NAME)
    {

           String where="NAME=?";
           int numberOFEntriesDeleted= db.delete("Employees", where, new String[]
           {NAME}) ;
           Toast.makeText(context, "Number fo Entry Deleted Successfully : 
             "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
        return numberOFEntriesDeleted;

    }
    public String getEntry(String Emp_code)
    {


            Cursor cursor=db.query("Employees", null, " EMPLOYEE_CODE=?", new
             String[]{Emp_code}, null, null, null);
            if(cursor.getCount()<1) // UserName Not Exist
                return "NOT EXIST";
            cursor.moveToFirst();
            String user= cursor.getString(cursor.getColumnIndex("NAME"));
            return user;


    }


      @Override
    public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub

    db.execSQL(DATABASE_CREATE);
    db.execSQL("insert into Employees( NAME , EMPLOYEE_CODE , MOBILE_NUMBER)
            "+" values ('Alexander','A111','1234567890');");
    db.execSQL("insert into Employees( NAME , EMPLOYEE_CODE , MOBILE_NUMBER)
             "+" values ('Bernie','B111','1234567890');");
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

        Log.w("TaskDBAdapter","Upgrading from 
       version"+oldVersion+"to"+newVersion+",which will destroy all old data"); 

    db.execSQL("DROP TABLE IF EXISTS"+"TEMPLATE");
    onCreate(db);
   }

        }
4

6 に答える 6

2

onCreateSQLiteOpenHelper のメソッドでデータ テーブルを作成する必要があります。

CREATE TABLE IF NOT EXISTS DATABASE_CREATE;

挿入ステートメントを次のように変更します

db.execSQL("insert into Employees( NAME , EMPLOYEE_CODE , MOBILE_NUMBER)
             VALUES ('Alexander','A111','1234567890');");
于 2013-09-18T06:27:04.723 に答える
1

onCreate では、最初に次のようにテーブルを作成する必要があります。

  db.execSQL("CREATE TABLE "+DATABASE_TABLE + " (" +
                    KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    KEY_NAME + " TEXT NOT NULL, " +
                    KEY_HOTNESS + " TEXT NOT NULL);"
                    );

編集:

public long createEntry(String name, String employeeCode, int mobileNum) {
    // TODO Auto-generated method stub
    ContentValues cv = new ContentValues();
    cv.put(NAME, name);
    cv.put(EMPLOYEE_CODE, employeeCode);
    cv.put(MOBILE_NUMBER, mobileNum);
    return db.insert("Employees", null, cv);
}

oncreate からこのメソッドを呼び出して、挿入したいものを渡します。

于 2013-09-18T06:33:51.947 に答える
0

テーブルクエリの作成を確認してください。m では、サンプル クエリを 1 つ示します。

CREATE TABLE IF NOT EXISTS menus (menuname TEXT,screens TEXT,menuitem TEXT,menuposition TEXT,menuid TEXT,PRIMARY KEY(menuid));

挿入する前に create table クエリを実行します。メソッドに上記のコードを追加しますonCreate()

于 2013-09-18T06:31:22.733 に答える
0

TABLE を作成するのを忘れました。OnCreate で DATABASE_CREATE クエリを実行するか、(オプション) onUpgrade テーブルで UPDATE テーブルを実行する必要があります。次のコードを参照してください。UPDATED および ADDED タグを参照してください。

.. SQLite によると、主キーの名前は _id でなければなりません

public class DummyDatabase extends SQLiteOpenHelper {
public static final int NAME_COLUMN = 2;
static final String DATABASE_NAME = "NestDatabase.db";
static final int DATABASE_VERSION = 1;
static final String tableName = "Employees";
static final String DATABASE_CREATE = "CREATE TABLE employees (_id INTEGER PRIMARY KEY, name TEXT, mobile_number TEXT);"; /** UPDATED **/


public SQLiteDatabase db;
private final Context context;
public DataBaseHelper1 dbHelper;

public DummyDatabase(Context _context) {
    super(_context, DATABASE_NAME, null, DATABASE_VERSION);
    // TODO Auto-generated constructor stub
    context = _context;
    dbHelper = new DataBaseHelper1(_context, DATABASE_NAME,
            null, DATABASE_VERSION);
}


public DummyDatabase open() throws SQLException {
    db = dbHelper.getWritableDatabase();
    return this;
}

public void close() {
    db.close();
}

public int deleteEntry(String NAME) {
    String where = "NAME=?";
    int numberOFEntriesDeleted = db.delete("Employees", where, new String[]
            {NAME});
    Toast.makeText(context, "Number fo Entry Deleted Successfully : 
            "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
    return numberOFEntriesDeleted;

}

public String getEntry(String Emp_code) {
    Cursor cursor = db.query("Employees", null, " EMPLOYEE_CODE=?", new
            String[]{Emp_code}, null, null, null);
    if (cursor.getCount() < 1) // UserName Not Exist
    {
        return "NOT EXIST";
    }
    cursor.moveToFirst();
    String user = cursor.getString(cursor.getColumnIndex("NAME"));
    return user;
}


@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL(DATABASE_CREATE); //** ADDED */
    db.execSQL("insert into Employees( NAME , EMPLOYEE_CODE , MOBILE_NUMBER)
            "+"values('Alexander', 'A111', '1234567890'); ");
    db.execSQL("insert into Employees( NAME , EMPLOYEE_CODE , MOBILE_NUMBER) 
            "+"values('Bernie', 'B111', '1234567890'); ");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
}
}
于 2013-09-18T06:46:29.523 に答える
0

この例を見てください

public class RouteDbAdapter 
{

public static final String KEY_PLACE = "place";
public static final String KEY_LATITUDE = "latitude";
public static final String KEY_LONGITUDE = "longitude";
public static final String KEY_ROWID = "_id";

private static final String TAG = "RouteDbAdapter";
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;


private static final String DATABASE_CREATE =
    "create table routes (_id integer primary key autoincrement, "
    + "place text not null, latitude real not null, longitude real not null);";

private static final String DATABASE_NAME = "cojDB";
private static final String DATABASE_TABLE = "routes";
private static final int DATABASE_VERSION = 2;

private final Context mCtx;

private static class DatabaseHelper extends SQLiteOpenHelper 
{

    DatabaseHelper(Context context) 
    {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) 
    {

        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
    {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS routes");
        onCreate(db);
    }
}


public RouteDbAdapter(Context ctx) 
{
    this.mCtx = ctx;
}

public RouteDbAdapter open() throws SQLException 
{
    mDbHelper = new DatabaseHelper(mCtx);
    mDb = mDbHelper.getWritableDatabase();
    return this;
}

public void close()
{
    mDbHelper.close();
}

public long createPlace(String place, Double lat,Double lng) 
{
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_PLACE, place);
    initialValues.put(KEY_LATITUDE, lat);
    initialValues.put(KEY_LONGITUDE, lng);

    return mDb.insert(DATABASE_TABLE, null, initialValues);
}

public boolean deletePlace(String place) 
{

    return mDb.delete(DATABASE_TABLE, KEY_PLACE + "='" + place+"'", null) > 0;
}


 public Cursor fetchAllPlace()
 {
    return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_LATITUDE,
            KEY_LONGITUDE,KEY_PLACE}, null, null, null, null, null);
 }


    public Cursor fetchPlace(String place) throws SQLException 
    {

    Cursor mCursor = 
        mDb.query(true, DATABASE_TABLE, new String[] {KEY_LATITUDE,KEY_LONGITUDE}, KEY_PLACE + "= '" +       place+"'", null,
                null, null, null, null);
    if (mCursor != null) 
    {
        mCursor.moveToFirst();
    }
    return mCursor;
 }
}
于 2013-09-18T07:29:24.927 に答える