对不起,我的英语不好。我已经用数据库创建了一个简单的日志和注册表应用程序。如果我注册了一个用户,我需要登录,应用程序会将我带到另一个屏幕。问题不在于如果创建了日志,那么登录按钮绝对不会做任何事情
MainActivity.java
public class MainActivity extends AppCompatActivity {
Button registrar;
Button iniciar;
BaseDatos bd = new BaseDatos(this, "bd1", null, 1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registrar = (Button) findViewById(R.id.registro);
registrar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent m = new Intent(getApplicationContext(), Registrar.class);
startActivity(m);
}
});
iniciar = (Button) findViewById(R.id.iniciar);
iniciar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText editText = (EditText) findViewById(R.id.editText);
EditText editText1 = (EditText) findViewById(R.id.editText2);
try {
Cursor cursor = bd.check(editText.getText().toString(), editText1.getText().toString());
if (cursor.getCount() > 0) {
Intent m = new Intent(getApplicationContext(), Musica.class);
startActivity(m);
} else {
Toast.makeText(getApplicationContext(), "Usuario o contraseña incorrectos", Toast.LENGTH_LONG).show();
}
editText.setText("");
editText1.setText("");
editText.findFocus();
} catch (SQLException e) {
e.printStackTrace();
}
}
});
}
}
Registrar.java
public class Registrar extends AppCompatActivity {
EditText nombre, usuario, password, puesto;
Button reg;
BaseDatos bd = new BaseDatos(this, "bd1",null,1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registro);
final BaseDatos Bdu = new BaseDatos(this, "bd1", null, 1);
reg = (Button) findViewById(R.id.reg);
nombre = (EditText) findViewById(R.id.nombre);
usuario = (EditText) findViewById(R.id.usuario);
password = (EditText) findViewById(R.id.password);
puesto = (EditText) findViewById(R.id.puesto);
reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bd.abrir();
bd.nuevosUsuarios(String.valueOf(nombre.getText()),
String.valueOf(usuario.getText()),
String.valueOf(password.getText()),
String.valueOf(puesto.getText()));
bd.cerrar();
Toast.makeText(getApplicationContext(), "Registro guardado con exito", Toast.LENGTH_LONG).show();
Intent m = new Intent(getApplicationContext(), MainActivity.class);
startActivity(m);
}
});
}
}
BaseDatos.java
public class BaseDatos extends SQLiteOpenHelper {
public BaseDatos(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate (SQLiteDatabase db){
String query = ("create table trabajadores(_ID integer primary key autoincrement, Nombre text, Usuario text, Password text,Puesto text)");
}
@Override
public void onUpgrade (SQLiteDatabase db,int oldVersion, int newVersion){
db.execSQL("insert into trabajadores values(01,'admin','admin')");
}
public void abrir ()
{
this.getWritableDatabase();
}
public void cerrar ()
{
this.close();
}
public void nuevosUsuarios (String nom, String usr, String pass, String pues){
ContentValues valores = new ContentValues();
valores.put("Nombre", nom);
valores.put("Usuario", usr);
valores.put("Password", pass);
valores.put("Puesto", pues);
this.getWritableDatabase().insert("trabajadores", null, valores);
}
public Cursor check( String usr, String pass) throws SQLException{
Cursor rcursor=null;
rcursor=this.getReadableDatabase().query("trabajadores", new String[]{"_ID,","Nombre","Usuario","Password","Puesto"},
"Usuario like '"+usr+"'"+" and Password like'"+pass+"'",null,null,null,null);
return rcursor;
}
}
发布于 2019-06-04 08:16:18
您没有在创建表。
在onCreate方法的BaseDatos.java中,添加以下行:-
db.execSQL(query);
因此,方法应该是:-
@Override
public void onCreate (SQLiteDatabase db){
String query = ("create table trabajadores(_ID integer primary key autoincrement, Nombre text, Usuario text, Password text,Puesto text)");
db.execSQL(query);
}
由于额外的,
.,检查方法还存在一个问题,该问题将导致SQlite语法错误
而不是
rcursor=this.getReadableDatabase().query("trabajadores", new String[]{"_ID,","Nombre","Usuario","Password","Puesto"},
"Usuario like '"+usr+"'"+" and Password like'"+pass+"'",null,null,null,null);
它应该是
rcursor=this.getReadableDatabase().query("trabajadores", new String[]{"_ID","Nombre","Usuario","Password","Puesto"},
"Usuario like '"+usr+"'"+" and Password like'"+pass+"'",null,null,null,null);
(在_ID之后删除逗号)。
注意进行更改后运行前,请删除应用程序的数据或卸载应用程序。
演示
启动时:-
单击注册器按钮:-
输入
返回到MainActivity
在用户名和密码中输入
音乐之旅
https://stackoverflow.com/questions/56435665
复制相似问题