2013-11-18 2 views
0

Простая страница регистрации, на которой имя пользователя, пароль и пароль подтверждают эти три текстовых поля. Я собираюсь создать базу данных, имеющую таблицу из трех атрибутов id, name и password, где id является первичным ключом, имя, которое мы получаем из поля ввода имени пользователя динамически, и пароль, который мы получаем из текстового поля пароля динамически. Но проблема в том, что база данных создана но значения, заданные динамически, не сохраняются/не обновляются в таблице. Я новичок в андроиде, и я использовал интернет-ресурсы для написания кода, но до сих пор я не понимаю на этом этапе. Заранее спасибо..!!База данных создана! Но таблица не получает значений

MainActivity.java : 
public class MainActivity extends Activity 
{ 
EditText editTextUserName,editTextPassword,editTextConfirmPassword; 
Button btnCreateAccount; 
DbHelper myHelper; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    editTextUserName=(EditText)findViewById(R.id.editTextUserName); 
    editTextPassword=(EditText)findViewById(R.id.editTextPassword); 
    editTextConfirmPassword=(EditText)findViewById(R.id.editTextConfirmPassword); 

    myHelper = new DbHelper(this, "", null, 1); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

    public void newName(View v) { 
     // onClick function when account create button is clicked 

     String userName=editTextUserName.getText().toString(); 
     String password=editTextPassword.getText().toString(); 
     Bus bus = new Bus(userName, password); 
     myHelper.insertEntry(bus); 
     String confirmPassword=editTextConfirmPassword.getText().toString(); 
       bus = new Bus(userName, password); 
       myHelper.insertEntry(bus); 
       editTextUserName.setText(""); 
       editTextPassword.setText(""); 
       editTextConfirmPassword.setText(""); 

       Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show(); 
     } 
    } 

     public void count (View view) { 
//onClick function when no of tuples in the table button is clicked 

      int a = myHelper.getNamesCount(); 
      String b = Integer.toString(a); 
      editTextUserName.setText(b); 

     } 

@Override 
protected void onDestroy() { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 

    myHelper.close(); 
} 
} 

и есть другой помощник базы данных класс называется DbHelper.java, код:

DbHelper.java : 
public class DbHelper extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 2; 
private static final String DATABASE_NAME = "finalProjectDB.db"; 
private static final String TABLE_LOGIN = "Table1"; 

public static final String COLUMN_ID1 = "id"; 
public static final String COLUMN_NAME1 = "name"; 
public static final String COLUMN_PASSWORD1 = "password"; 

public DbHelper(Context context, String name, 
     CursorFactory factory, int version) { 
    super(context, DATABASE_NAME, factory, DATABASE_VERSION); 
} 

public SQLiteDatabase db; 

@Override 
public void onCreate(SQLiteDatabase db) { 
     String CREATE_NAMES_TABLE = "CREATE TABLE "+TABLE_LOGIN+"("+COLUMN_ID1+" INTEGER PRIMARY KEY,"+COLUMN_NAME1+" TEXT,"+COLUMN_PASSWORD1+" TEXT)"; 
     db.execSQL(CREATE_NAMES_TABLE); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS "+TABLE_LOGIN); 
     onCreate(db); 
} 



public void insertEntry(Bus bus) 
{ 
    ContentValues newValues = new ContentValues(); 

    newValues.put("COLUMN_NAME1",bus.getName()); 
    newValues.put("COLUMN_PASSWORD1",bus.getPassword()); 
    SQLiteDatabase db = this.getWritableDatabase(); 

    db.insert("TABLE_LOGIN", null, newValues); 
    ///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show(); 
    db.close(); 


} 

public int getNamesCount(){ 

    String countQuery = "SELECT * FROM "+TABLE_LOGIN; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(countQuery, null); 
    int count = cursor.getCount(); 
    return count; 
} 

} 

Наконец, Bus.java файл:

Bus.java : 
public class Bus { 
private int _id; 
    private String _name; 
    private String _password; 

    public Bus(){ 

    } 

    public Bus(int id, String name, String password){ 
     this._id = id; 
     this._name = name; 
     this._password = password; 
    } 

    public Bus(String name, String password){ 
     this._name = name; 
     this._password = password; 
    } 

    public void setID(int id){ 
     this._id = id; 
    } 

    public int getID(){ 
     return this._id; 
    } 

    public void setName(String name) { 
     this._name = name; 
    } 

    public String getName() { 
     return this._name; 
    } 

    public void setPassword(String password) { 
     this._password = password; 
    } 

    public String getPassword() { 
     return this._password; 
    } 

} 

ответ

1

Кажется, у вас есть ошибка в Ваш код:

db.insert("TABLE_LOGIN", null, newValues); 

So вы пытаетесь вставить значения в таблицу, которая не существует.

Используйте константу вместо строки.

+0

жаль, что я вас не понял. Что вы подразумеваете под своим постоянным? –

Смежные вопросы