Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android编程SQLite_Java_Android_Sqlite - Fatal编程技术网

Java Android编程SQLite

Java Android编程SQLite,java,android,sqlite,Java,Android,Sqlite,单击submit按钮后,出现了一个消息:不幸的是,SQLite_演示已经停止工作。还有一件事,当项目第一次显示在emulator上时,toast会显示一个弹出窗口:构造函数调用。请解释原因 这是我的密码: RahulDatabaseHelper.java public class RahulDatabaseHelper{ RahulHelper RH; public RahulDatabaseHelper(Context context) { RH=new RahulHelper(cont

单击submit按钮后,出现了一个消息:不幸的是,SQLite_演示已经停止工作。还有一件事,当项目第一次显示在emulator上时,toast会显示一个弹出窗口:构造函数调用。请解释原因

这是我的密码:

RahulDatabaseHelper.java

public class RahulDatabaseHelper{
RahulHelper RH;
public RahulDatabaseHelper(Context context)
{
   RH=new RahulHelper(context);
}
public long insertData(String username,String userpassword)
{
    SQLiteDatabase sqLiteDatabase=RH.getWritableDatabase();**strong text**
    ContentValues Values=new ContentValues();
    Values.put(RahulHelper.NAME,username);
    Values.put(RahulHelper.PASSWORD,userpassword);
    long id=sqLiteDatabase.insert(RahulHelper.TABLE_NAME,null,Values);
    sqLiteDatabase.close();
    return id;
}


static class RahulHelper extends SQLiteOpenHelper {

    private static final  String DATABASE_NAME="vivzdatabase.db";
    private static final  String TABLE_NAME="VIVZTABLE";
    private static final  String UID="_id";
    private static final  String NAME="Name";
    private static final  String PASSWORD="Password";
    private static final  int DATABASE_VERSION=4;
    private static final String DATABASE_CREATE ="create table" +TABLE_NAME+ "("+UID+ "integer primary key autoincrement, "
            +NAME+ "VARCHAR(255)"+PASSWORD+"VARCHAR(255));";
    private static final String DROP_TABLE="DROP TABLE IF EXISTS"+TABLE_NAME;

    Context context;
    RahulHelper(Context context) {
        super(context,DATABASE_NAME,null,DATABASE_VERSION);
        this.context=context;
        Message.mess(context,"Constructor called");
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        try {
            db.execSQL(DATABASE_CREATE);
            Message.mess(context,"onCreate called");
        }catch (SQLException e)
        {Message.mess(context,""+e);}

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        try {
            Message.mess(context,"onUpgrade called");
            db.execSQL(DROP_TABLE);
            onCreate(db);
        }catch (SQLException e)
        {Message.mess(context,""+e);}
    }
}}        
MainActivity.java

public class MainActivity extends ActionBarActivity {

EditText et1,et2;
RahulDatabaseHelper rahulDatabaseHelper;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    et1=(EditText)findViewById(R.id.username);
    et1=(EditText)findViewById(R.id.userpass);

    rahulDatabaseHelper=new RahulDatabaseHelper(this);

 }

public void method(View v)
{
  String name=et1.getText().toString();
    String pass=et2.getText().toString();

    long id=rahulDatabaseHelper.insertData(name,pass);
    if (id<0)
        Message.mess(this,"UnSuccessFull");
    else
        Message.mess(this,"Row Inserted SuccessFully");

}}
public class Message {

public static void mess(Context context,String string)
{
    Toast.makeText(context,string,Toast.LENGTH_LONG).show();
}}

et2
在您的代码中为空:

et1=(EditText)findViewById(R.id.username);
et1=(EditText)findViewById(R.id.userpass);
两行都是
et1
您需要将其中一行更改为
et2

您在下面的方法中得到一个错误

public void method(View v)
{
    String name=et1.getText().toString();
    String pass=et2.getText().toString();  // et2 is null

    long id=rahulDatabaseHelper.insertData(name,pass);
    if (id<0)
        Message.mess(this,"UnSuccessFull");
    else
        Message.mess(this,"Row Inserted SuccessFully");

}
公共作废方法(视图五)
{
字符串名称=et1.getText().toString();
String pass=et2.getText().toString();//et2为空
long id=rahulDatabaseHelper.insertData(name,pass);

如果@shayan pourvatan建议的(id)

换行

et1=(EditText)findViewById(R.id.userpass);

那么……这些说明都不起作用:

private static final String DATABASE_CREATE ="create table" +TABLE_NAME+ "("+UID+ "integer primary key autoincrement, "
            +NAME+ "VARCHAR(255)"+PASSWORD+"VARCHAR(255));";
private static final String DROP_TABLE="DROP TABLE IF EXISTS"+TABLE_NAME;
您需要添加一些空格:

private static final String DATABASE_CREATE = "CREATE TABLE " + TABLE_NAME + "(" +
    UID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
    NAME + " VARCHAR(255)" + PASSWORD + " VARCHAR(255))";
private static final String DROP_TABLE = "DROP TABLE IF EXISTS " + TABLE_NAME;

无论何时执行sqliteopenhelper类的oncreate方法,它都将创建表。 但在查询字符串中,缺少了一些空格,因此无法创建表,从而导致“未找到表”错误

 private static final String DATABASE_CREATE ="create table" +TABLE_NAME+ "("+UID+ " integer primary key autoincrement, "
                +NAME+ " VARCHAR(255)"+PASSWORD+" VARCHAR(255));";

点击提交按钮后,会出现一个按摩。
发送该应用程序!将其放入Play Store,我会购买;)@Simon我猜这是一个SPA应用程序…;)
private static final String DATABASE_CREATE = "CREATE TABLE " + TABLE_NAME + "(" +
    UID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
    NAME + " VARCHAR(255)" + PASSWORD + " VARCHAR(255))";
private static final String DROP_TABLE = "DROP TABLE IF EXISTS " + TABLE_NAME;
 private static final String DATABASE_CREATE ="create table" +TABLE_NAME+ "("+UID+ " integer primary key autoincrement, "
                +NAME+ " VARCHAR(255)"+PASSWORD+" VARCHAR(255));";