【问题标题】:unknown sqlite db error未知的 sqlite 数据库错误
【发布时间】:2012-08-17 23:17:50
【问题描述】:

当尝试将数据插入我的 sqlite 数据库时,我收到一个 logcat 错误“未知数据库登录数据:,编译时:”。错误消息听起来很直接,但我可以找到问题所在。在我的数据库类或插入数据的活动中。

错误信息:

   unknown database logindata: , while compiling: create table if not exists logindata.db (_id integer primary key autoincrement,username text not null,password text not null);

数据库:

  public class LoginDB extends SQLiteOpenHelper {

//Table attributes
public static final String DATABASE_NAME = "logindata.db";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME_INFOTABLE = "credentials";

// Data attributes
public static final String COLUMN_NAME_USERNAME = "username";
public static final String COLUMN_NAME_PASSWORD = "password";

private SQLiteOpenHelper DBHelper;
private SQLiteDatabase db;



public LoginDB(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

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

        String sqlDataStore = "create table if not exists " +
        DATABASE_NAME + " ("+ BaseColumns._ID + " integer primary key autoincrement,"

                    + COLUMN_NAME_USERNAME + " text not null,"
                    + COLUMN_NAME_PASSWORD + " text not null);";

        db.execSQL(sqlDataStore);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        if(oldVersion == 1 && newVersion == 2){
            //Upgrade the database
    }   

}

    public boolean Login(String username, String password) throws SQLException
    {
        Cursor mCursor = db.rawQuery("SELECT * FROM " + DATABASE_NAME + " WHERE username=? AND password=?",
                new String[]{username,password});
        if(mCursor !=null) {
            if(mCursor.getCount()>0)
            {
            return true;
            }
        }
            return false;
        }

    public void open() {
        // TODO Auto-generated method stub
        db = DBHelper.getWritableDatabase();
    }
    public void close() {
        DBHelper.close();
    }
     }

活动:

   public class CredentialsActivity extends Activity implements OnClickListener{

   private Button lReg;
   private EditText lUname;
   private EditText lPword;

   private LoginDB loginDb = new LoginDB(CredentialsActivity.this);

   @Override
   protected void onCreate (Bundle savedInstanceState) {
   // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
   setContentView(R.layout.register);

   lReg = (Button)findViewById(R.id.reg_button);
   lReg.setOnClickListener(this);
   }

  public void onClick(View v) {

switch(v.getId()) {

case R.id.reg_button:
    lUname = (EditText)findViewById(R.id.reg_uname);
    lPword = (EditText)findViewById(R.id.reg_pswd);

    String uname = lUname.getText().toString();
    String pass = lPword.getText().toString();
    boolean invalid = false;

    if(uname.equals("")){
        invalid = true;
        Toast.makeText(getApplicationContext(), "Username Missing", Toast.LENGTH_SHORT).show();
    }else if(pass.equals("")){
        invalid = true;
        Toast.makeText(getApplicationContext(), "Password Missing", Toast.LENGTH_SHORT).show();
    }
    if(invalid == false){
        addEntry(uname, pass);
        Intent i_register = new Intent(CredentialsActivity.this, LoginDB.class);
        startActivity(i_register);
        finish();
}}
}
    public void onDestroy() {
        super.onDestroy();
        loginDb.close();
    }

     public void addEntry(String uname, String pass){

     SQLiteDatabase db = loginDb.getWritableDatabase();
     ContentValues values = new ContentValues();
     values.put("username", uname);
     values.put("password", pass);

     try{
         db.insert(LoginDB.DATABASE_NAME, null, values);
         Toast.makeText(getApplicationContext(), "Saved! Please login now",            Toast.LENGTH_SHORT).show();
         }catch(Exception err){
      err.printStackTrace();
     }
    }
   }

【问题讨论】:

    标签: android sqlite compiler-errors logcat


    【解决方案1】:

    logindata.db 不是有效的表名,请使用不带. 的名称,例如只是logindata

    public static final String DATABASE_NAME = "logindata.db";
    public static final String TABLE_NAME = "logindata";
    
    // ...
    
    String sqlDataStore = "create table if not exists " +
    TABLE_NAME + "...
    
    // replace other places where you use DATABASE_NAME too
    

    【讨论】:

    猜你喜欢
    • 2015-02-16
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多