Java Android编程SQLite
单击submit按钮后,出现了一个消息:不幸的是,SQLite_演示已经停止工作。还有一件事,当项目第一次显示在emulator上时,toast会显示一个弹出窗口:构造函数调用。请解释原因 这是我的密码: RahulDatabaseHelper.javaJava 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
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));";