2013-03-28 3 views
0

Я разрабатываю свое первое приложение, в котором пользователь должен войти в систему. Я использую SQLite db для хранения имен пользователей и паролей. Но я получаю Force close error, когда i Я пытаюсь добавить новые контакты в базу данных. Пожалуйста, помогите мне, где я ошибаюсь. Это код.принудительное закрытие ошибки при вводе записей в sqlite db

Файл User.java используется в основном для получения и установки:

package com.example.first_db_app; 

public class User 
{ 
    //private variables 


int _userid; 
String _uname; 
String _upwd; 

//empty constructor 
public User() 
{ 

} 

//constructor 
/*public User(int userid,String uname,String upwd) 
{ 
    this._userid=userid; 
    this._uname=uname; 
    this._upwd=upwd; 
}*/ 

//constructor 
public User(String uname,String upwd) 
{ 
    this._uname=uname; 
    this._upwd=upwd; 
} 




//getting userid 
public int getUserId() 
{ 
    return this._userid; 
} 

//setting userid 

public void setUserId(int userid) 
{ 
    this._userid=userid; 
} 




//getting username 

public String getUname() 
{ 
    return this._uname; 
} 

//setting username 
public void setUname(String uname) 
{ 
    this._uname=uname; 
} 



//getting user password 
public String getUpwd() 
{ 
    return this._upwd; 
} 

//setting user password 
public void setUpwd(String upwd) 
{ 
    this._upwd=upwd; 
} 

}

В DatabaseHandler.java, в котором я создал БД и операции CRUD

package com.example.first_db_app; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.DatabaseErrorHandler; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 

//creating database 
public class DatabaseHandler extends SQLiteOpenHelper 
{ 


//private static variables 

private static final int DATABASE_VERSION=1; 

//database name 
private static final String DATABASE_NAME="UserDB"; 

//table name 
private static final String TABLE_NAME="Users"; 

//table column names 
private static final String USER_ID="id"; 
private static final String USER_NAME="u_name"; 
private static final String USER_PWD="u_pwd"; 

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


//creating tables 
@Override 
public void onCreate(SQLiteDatabase db) 
{ 
    // TODO Auto-generated method stub 
    String CREATE_USERS_TABLE= "CREATE TABLE"+ TABLE_NAME+ "("+ USER_NAME +  "TEXT,"+ USER_PWD + "TEXT" + ")"; 
    db.execSQL(CREATE_USERS_TABLE); 
} 




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

    //drop older table if existed 

    db.execSQL("DROP TABLE IF EXISTS"+ TABLE_NAME); 
    //creates table again 
    onCreate(db); 

} 


//adding new users to the database 
public void addUser(User user) 
{ 

    SQLiteDatabase db=this.getWritableDatabase(); 

    ContentValues values=new ContentValues(); 
    //values.put(USER_ID, user.getUserId()); 
    values.put(USER_NAME, user.getUname()); 
    values.put(USER_PWD, user.getUpwd()); 

    //inserting row 
    db.insert(TABLE_NAME, null, values); 
    db.close(); 

} 



//reading a single row.this is done by using cursor 

public String getUser(String Uname) 
{ 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor cursor=db.query(TABLE_NAME,new String[] {USER_NAME,USER_PWD},USER_NAME + "=?",new String[]{String.valueOf(Uname)},null,null,null,null); 

    if (cursor!=null) 
     cursor.moveToFirst(); 

    //User user=new User(cursor.getString(0),cursor.getString(1)); 
    String password=cursor.getString(cursor.getColumnIndex(USER_PWD)); 
    cursor.close(); 
    //return user 
    return password; 
} 


//Updating a single record in database 

public int updateUser(User user) 
{ 
    SQLiteDatabase db=this.getWritableDatabase(); 

    ContentValues values=new ContentValues(); 
    values.put(USER_NAME,user.getUname()); 
    values.put(USER_PWD, user.getUpwd()); 

    //updating row 
    db.update(TABLE_NAME, values, USER_NAME + "=?" ,new String[]{String.valueOf(user.getUname())}); 
    return 0; 

} 

//Deleting a single record in database 
public void deleteUser(User user) 
{ 
    SQLiteDatabase db=this.getWritableDatabase(); 

    db.delete(TABLE_NAME, USER_NAME + "=?", new String[]{String.valueOf(user.getUname())}); 
    db.close(); 
} 

}

И Im используя следующий файл для входа пользователя, в котором содержатся текстовые поля для имени пользователя и пароля и кнопку

TestDbActivity.java

package com.example.first_db_app; 

import android.os.Bundle; 
import android.app.Activity; 
import android.util.Log; 
import android.view.Menu; 

public class TestDbActivity extends Activity { 

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

    DatabaseHandler db=new DatabaseHandler(this); 


    //CRUD operations 

    //inserting the records 
    Log.d("Insert: ", "Inserting .."); 
    db.addUser(new User("Ashwin","11111")); 
    db.addUser(new User("Ravi","22222")); 
    db.addUser(new User("Gopal","33333")); 
    db.addUser(new User("Satish","44444")); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.test_db, menu); 
    return true; 
} 

}

+2

Что исключение стека? – waqaslam

ответ

1

Я подозреваю, что ошибка по созданию базы данных. Там нет места между

  1. "CREATE TABLE" и 'значение s
  2. USER_NAME' TABLE_NAME s значение и "TEXT" значение
  3. USER_PWD «s и "TEXT"

Вставка новый запись похоже прекрасный.

String CREATE_USERS_TABLE = String.format("CREATE TABLE %s (%s TEXT, %s TEXT)", TABLE_NAME, USER_NAME, USER_PWD); 
db.execSQL(CREATE_USERS_TABLE); 

Так что будьте осторожны на вашем заявлении

+0

Пожалуйста, найдите момент, чтобы описать, что вы исправили и почему, иначе трудно сказать, что 'CREATE_USERS_TABLE' является реальной проблемой. – Sam

+0

Да, мне не хватает места. Большое спасибо .. это работает. Ты жжешь. – user2179989