Java 在android中连接到db时,表中缺少字段
使用准备好的语句,我试图在表中插入值,显示电子邮件中没有列名,但很明显,我并没有遗漏项目中任何地方的电子邮件 RegistrationAcitivity.javaJava 在android中连接到db时,表中缺少字段,java,android,android-layout,Java,Android,Android Layout,使用准备好的语句,我试图在表中插入值,显示电子邮件中没有列名,但很明显,我并没有遗漏项目中任何地方的电子邮件 RegistrationAcitivity.java public void reg_submit(View v){ DataHelper con=new DataHelper(this); GetterRegistration model=new GetterRegistration(); SQLiteDatabase db = con.getWri
public void reg_submit(View v){
DataHelper con=new DataHelper(this);
GetterRegistration model=new GetterRegistration();
SQLiteDatabase db = con.getWritableDatabase();
**String sql="insert into registration(name,email,password)values(?,?,?)";**
SQLiteStatement stmt = db.compileStatement(sql);
stmt.bindString(1, model.getName());
stmt.bindString(2, model.getEmail());
stmt.bindString(3, model.getPassword());
stmt.execute();
db.close();
Intent in = new Intent(this, CocomoActivity.class);
startActivityForResult(in, requestCode);
}
}
DataHelper.java
public class DataHelper extends SQLiteOpenHelper {
public static final String TABLE_COMMENTS = "registration";
public static final String id= "_id";
public static final String name = "name";
**public static final String email = "email";**
public static final String password = "password";
private static final String DATABASE_NAME = "mydb.db";
private static final int DATABASE_VERSION = 1;
// Database creation sql statement
private static final String DATABASE_CREATE = "create table "
+ TABLE_COMMENTS + "( " + id
+ " integer primary key autoincrement, " + name
+ " text not null,"+email
+"text not null," +password
+"text not null)";
这是Logcat中的错误报告
05-11 15:16:25.785:E/AndroidRuntime(704):在java.lang.reflect.Method.invoke(Method.java:507)
05-11 15:16:25.785:E/AndroidRuntime(704):在android.view.view$1.onClick(view.java:2139)
05-11 15:16:25.785:E/AndroidRuntime(704):。。。还有11个
05-11 15:16:25.785:E/AndroidRuntime(704):由以下原因引起:android.database.sqlite.SQLiteException:表注册没有名为email:的列,编译时:插入注册(名称、电子邮件、密码)值(?,?)
05-11 15:16:25.785:E/AndroidRuntime(704):在android.database.sqlite.SQLiteCompiledSql.native_编译(本机方法)
05-11 15:16:25.785:E/AndroidRuntime(704):在android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
05-11 15:16:25.785:E/AndroidRuntime(704):在android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:65)
05-11 15:16:25.785:E/AndroidRuntime(704):在android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:83)
05-11 15:16:25.785:E/AndroidRuntime(704):位于android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:41)
05-11 15:16:25.785:E/AndroidRuntime(704):在android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1149)
05-11 15:16:25.785:E/AndroidRuntime(704):在android.cocomo.login.RegistrationActivity.reg_提交(RegistrationActivity.java:45)
任何帮助都将不胜感激。先谢谢你。如果有人建议让我认识朋友,我仍在努力解决这个问题。电子邮件和文本之间没有空格
**email+"text** not null," +...
在密码和文本之间'private static final String DATABASE_CREATE=“CREATE table”+table_COMMENTS+”(“+id+”整型主键自动递增,“+name+”文本不为null,“+email+”文本不为null,“+password+”文本不为null)”;'还是一样的问题将
name+“text
更改为name+”text
和password+“text
更改为password+”text
您当前的查询类似于nametext not null、emailtext not null、passwordtext not null
zz这让我发疯了。。现在我删除了所有字符串,直接输入查询private static final String DATABASE_CREATE=“创建表注册(_idinteger主键自动递增,名称文本不为null,电子邮件文本不为null,密码文本不为null);”代码>仍然错误现在您有一个额外的“;”在数据库中,最后创建字符串。在更改“创建表”查询之前删除表。除非更改数据库版本,否则不会调用AsqliteOpenHelperOnCreate。