首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >数据库已创建?登录按钮执行nothing.AndroidStudio、sqlite

数据库已创建?登录按钮执行nothing.AndroidStudio、sqlite
EN

Stack Overflow用户
提问于 2019-06-04 07:26:11
回答 1查看 153关注 0票数 -1

对不起,我的英语不好。我已经用数据库创建了一个简单的日志和注册表应用程序。如果我注册了一个用户,我需要登录,应用程序会将我带到另一个屏幕。问题不在于如果创建了日志,那么登录按钮绝对不会做任何事情

MainActivity.java

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-04 08:16:18

您没有在创建表。

在onCreate方法的BaseDatos.java中,添加以下行:-

代码语言:javascript
复制
db.execSQL(query);

因此,方法应该是:-

代码语言:javascript
复制
@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语法错误

而不是

代码语言:javascript
复制
rcursor=this.getReadableDatabase().query("trabajadores", new String[]{"_ID,","Nombre","Usuario","Password","Puesto"},
            "Usuario like '"+usr+"'"+" and Password like'"+pass+"'",null,null,null,null);

它应该是

代码语言:javascript
复制
rcursor=this.getReadableDatabase().query("trabajadores", new String[]{"_ID","Nombre","Usuario","Password","Puesto"},
            "Usuario like '"+usr+"'"+" and Password like'"+pass+"'",null,null,null,null);

(在_ID之后删除逗号)。

注意进行更改后运行前,请删除应用程序的数据或卸载应用程序。

演示

启动时:-

  • 注意:所有显示都有活动的名称(因为红色箭头表示在此阶段单击的按钮
  • ,单击INICIAR按钮只会发出祝酒词。

单击注册器按钮:-

输入

  • 用户编号(1)、用户名(Fred)、密码( password )和puesto (blah),然后单击注册按钮。

返回到MainActivity

在用户名和密码中输入

  • Fred和密码,然后单击初始按钮。

音乐之旅

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56435665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档