gpt4 book ai didi

android.database.sqlite.SQLiteException : table X has no column named Y: , 编译时:INSERT INTO

转载 作者:IT王子 更新时间:2023-10-29 06:24:36 28 4
gpt4 key购买 nike

这是我在控制台中的错误:

11-29 19:06:50.295: E/AndroidRuntime(333): android.database.sqlite.SQLiteException: table usuarios has no column named email: , while compiling: INSERT INTO usuarios(username, organizacion, email) VALUES(?, ?, ?);

这是 mainActivity,带有一个用于创建“Perfil”(用户)[btCrearPerfil] 的 Activity 的按钮......以及一个用于查看 listView 的按钮 [btEditarPerfil]......

public class MainActivity extends Activity implements OnClickListener {

public static ArrayList<Perfil> lstPerfiles;

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

lstPerfiles = new ArrayList<Perfil>();

Button btCrearPerfil = (Button) findViewById(R.id.btCrearPerfil);
btCrearPerfil.setOnClickListener(this);
Button btEditarPerfil = (Button) findViewById(R.id.btEditarPerfil);
btEditarPerfil.setOnClickListener(this);

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public void onClick(View v) {
Intent i;

switch(v.getId()) {
case R.id.btCrearPerfil:

i = new Intent(MainActivity.this, CrearPerfil.class);
startActivity(i);

break;

case R.id.btEditarPerfil:

i = new Intent(MainActivity.this, ListaPerfiles.class);
startActivity(i);

break;

default: break;
}
}

}

这是 Perfil 的创建者,由 btCrearPerfil 输入:

public class CrearPerfil extends Activity implements OnClickListener {

private Database datos;

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

datos = new Database(this);

Button btGuardarPerfil = (Button) findViewById(R.id.btGuardarPerfil);
btGuardarPerfil.setOnClickListener(this);
Button btCancelar = (Button) findViewById(R.id.btCancelarPerfil);
btCancelar.setOnClickListener(this);
}

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

@Override
public void onClick(View v) {

Intent i;

switch (v.getId()){

case R.id.btGuardarPerfil:



EditText eNombre = (EditText) findViewById(R.id.txtUsername);
EditText eOrganizacion = (EditText) findViewById(R.id.txtOrganizacion);
EditText eCorreo = (EditText) findViewById(R.id.txtCorreo);
CheckBox eFavorito = (CheckBox) findViewById(R.id.cbFavorito);

if ((eNombre.equals("")) || (eOrganizacion.equals("")) || (eCorreo.equals(""))){
Toast.makeText(getApplicationContext(), "Rellena los campos", Toast.LENGTH_SHORT).show();
} else {

datos.nuevoPerfil(eNombre.getText().toString(),
eOrganizacion.getText().toString(), eCorreo.getText().toString());


Perfil p = new Perfil();
p.setUsername(eNombre.getText().toString());
p.setOrganizacion(eOrganizacion.getText().toString());
p.setCorreo(eCorreo.getText().toString());
p.setFavorito(eFavorito.isChecked());

MainActivity.lstPerfiles.add(p);

eNombre.setText("");
eOrganizacion.setText("");
eCorreo.setText("");

Toast.makeText(getApplicationContext(), "Perfil guardado", Toast.LENGTH_SHORT).show();

i = new Intent(CrearPerfil.this, MainActivity.class);
startActivity(i);
}

break;

case R.id.btCancelarPerfil:

i = new Intent(CrearPerfil.this, MainActivity.class);
startActivity(i);

break;

default: break;
}
}

}

而这个,SQLite 创建者的数据库......

public class Database extends SQLiteOpenHelper {

private static final String BBDD_NOMBRE = "baseDatos.db";
private static String[] FROM_CURSOR = {_ID, NOMBRE_USUARIO, NOMBRE_ORGANIZACION, NOMBRE_CORREO };
private static String ORDER_BY = NOMBRE_USUARIO + " DESC";

public Database(Context contexto) {
super(contexto, BBDD_NOMBRE, null, 1 );
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLA_USUARIOS + "("
+ _ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "
+ NOMBRE_USUARIO + " TEXT NOT NULL, "
+ NOMBRE_ORGANIZACION + " TEXT NOT NULL, "
+ NOMBRE_CORREO + "TEXT NOT NULL);");
}

@Override
public void onUpgrade(SQLiteDatabase db, int a, int b) {
db.execSQL("DROP TABLE IF EXISTS " + TABLA_USUARIOS);
onCreate(db);
}

public void nuevoPerfil(String n, String o, String c){
SQLiteDatabase db = this.getWritableDatabase();

ContentValues value = new ContentValues();
value.put(NOMBRE_USUARIO, n);
value.put(NOMBRE_ORGANIZACION, o);
value.put(NOMBRE_CORREO, c);
db.insertOrThrow(TABLA_USUARIOS, null, value);
}

public Cursor getPerfiles() {

SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.query(TABLA_USUARIOS, FROM_CURSOR, null, null, null, null, ORDER_BY);

return c;
}

}

需要帮助...谢谢...

最佳答案

您在 CREATE TABLE 语句中缺少一个空格:

NOMBRE_CORREO + "TEXT NOT NULL);");

应该是

NOMBRE_CORREO + " TEXT NOT NULL);");

关于android.database.sqlite.SQLiteException : table X has no column named Y: , 编译时:INSERT INTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20293812/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com