Java ContentValues插入始终返回-1
Java ContentValues插入始终返回-1,java,android,sqlite,sqliteopenhelper,content-values,Java,Android,Sqlite,Sqliteopenhelper,Content Values,db.insert(表名称,null,contentValues)总是返回-1,并且它不会在数据库中插入值 你能帮我找出我做错了什么吗 数据库_class.java: public class database_class extends SQLiteOpenHelper { public static final String database_name = "signup_db"; public static final String table_name = "signup
db.insert(表名称,null,contentValues)
总是返回-1
,并且它不会在数据库中插入值
你能帮我找出我做错了什么吗
数据库_class.java:
public class database_class extends SQLiteOpenHelper {
public static final String database_name = "signup_db";
public static final String table_name = "signup";
public static final String column_1 = "FIRST_NAME";
public static final String column_2 = "SECOND_NAME";
public static final String column_3 = "EMAIL";
public static final String column_4 = "PASSWORD";
public static final String column_5 = "c_password";
public database_class(Context context){
super(context,database_name , null, 1);
//Toast.makeText(context, "Class called ", Toast.LENGTH_SHORT).show();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table" + table_name + "(ID INTEGER PRIMARY KEY AUTOINCREMENT , FIRST_NAME TEXT , SECOND_NAME TEXT , EMAIL TEXT , PASSWORD TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS" + table_name);
onCreate(db);
}
public boolean insertData(String first_name, String second_name, String email, String password){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(column_1,first_name);
contentValues.put(column_2,second_name);
contentValues.put(column_3,email);
contentValues.put(column_4,password);
long result = db.insert(table_name,null,contentValues);
if (result == -1)
return false;
else
return true;
}
}
主要活动代码:
fn = editText1.getText().toString();
ln = editText2.getText().toString();
em = editText3.getText().toString();
pass = editText4.getText().toString();
cpass = editText5.getText().toString();
if (1 == 1) {
//boolean isInserted = mydb.insertData(signup_values[0].toString(),signup_values[1].toString(),signup_values[2].toString(),signup_values[3].toString());
boolean isInserted = mydb.insertData(fn,ln,em,pass);
if(isInserted == true) {
Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(MainActivity.this, "Password Mismatch", Toast.LENGTH_SHORT).show();
我相信在创建数据库时出错。这样,
create
表将失败,然后,insert
也将失败(因为未正确创建表)
代码的其他部分似乎还可以
此行将生成以下字符串:
db.execSQL("create table" + table_name + "(ID INTEGER PRIMARY KEY AUTOINCREMENT , FIRST_NAME TEXT , SECOND_NAME TEXT , EMAIL TEXT , PASSWORD TEXT)");
结果:
create tablesignup(ID INTEGER PRIMARY KEY AUTOINCREMENT , FIRST_NAME TEXT , SECOND_NAME TEXT , EMAIL TEXT , PASSWORD TEXT)
这不是有效的SQL命令。因此,请尝试添加一些空格,如:
db.execSQL("create table " + table_name + " ( ID INTEGER PRIMARY KEY AUTOINCREMENT, FIRST_NAME TEXT, SECOND_NAME TEXT, EMAIL TEXT, PASSWORD TEXT )");
db.execSQL("DROP TABLE IF EXISTS " + table_name);
错误2
由于相同的错误,您的onUpgrade()
也无法工作:
db.execSQL("DROP TABLE IF EXISTS" + table_name);
需要添加一些空格,如:
db.execSQL("create table " + table_name + " ( ID INTEGER PRIMARY KEY AUTOINCREMENT, FIRST_NAME TEXT, SECOND_NAME TEXT, EMAIL TEXT, PASSWORD TEXT )");
db.execSQL("DROP TABLE IF EXISTS " + table_name);
最后
我测试了你的代码,效果很好。也许,以前发生过一些错误,最好“重新安装”数据库
如何做到:
- Unistall/安装你的应用程序
- 将数据库版本更新为force
。只需执行:onUpgrade()
atsuper(上下文,数据库名称,null,2)
onCreate()
create
表将失败,然后,insert
也将失败(因为未正确创建表)
代码的其他部分似乎还可以
此行将生成以下字符串:
db.execSQL("create table" + table_name + "(ID INTEGER PRIMARY KEY AUTOINCREMENT , FIRST_NAME TEXT , SECOND_NAME TEXT , EMAIL TEXT , PASSWORD TEXT)");
结果:
create tablesignup(ID INTEGER PRIMARY KEY AUTOINCREMENT , FIRST_NAME TEXT , SECOND_NAME TEXT , EMAIL TEXT , PASSWORD TEXT)
这不是有效的SQL命令。因此,请尝试添加一些空格,如:
db.execSQL("create table " + table_name + " ( ID INTEGER PRIMARY KEY AUTOINCREMENT, FIRST_NAME TEXT, SECOND_NAME TEXT, EMAIL TEXT, PASSWORD TEXT )");
db.execSQL("DROP TABLE IF EXISTS " + table_name);
错误2
由于相同的错误,您的onUpgrade()
也无法工作:
db.execSQL("DROP TABLE IF EXISTS" + table_name);
需要添加一些空格,如:
db.execSQL("create table " + table_name + " ( ID INTEGER PRIMARY KEY AUTOINCREMENT, FIRST_NAME TEXT, SECOND_NAME TEXT, EMAIL TEXT, PASSWORD TEXT )");
db.execSQL("DROP TABLE IF EXISTS " + table_name);
最后
我测试了你的代码,效果很好。也许,以前发生过一些错误,最好“重新安装”数据库
如何做到:
- Unistall/安装你的应用程序
- 将数据库版本更新为force
。只需执行:onUpgrade()
atsuper(上下文,数据库名称,null,2)
onCreate()