I have a problem trying Iniciar sesión
in my app; I register and enter the data correctly, but when I try to login, the application stops.
When reading the logcat it indicates to me that it is an error in Registro.java
.
EditText b;
b = (EditText)findViewById(R.id.TF_passdocente);
String pass = b.getText().toString();
Login.java:
package joinder.proyecto;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Main_docente extends AppCompatActivity {
Button btnLogin;
DatabaseHelper helper = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screen_docente);
btnLogin = (Button)findViewById(R.id.B_logindocente);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText a;
a = (EditText)findViewById(R.id.TF_userdocente);
String str = a.getText().toString();
EditText b;
b = (EditText)findViewById(R.id.TF_passdocente);
String pass = b.getText().toString();
String password = helper.searchPass(str);
if (pass.equals(password)){
Intent sg = new Intent(Main_docente.this, MainActivity.class);
sg.putExtra("Username", str);
startActivity(sg);
}
else{
Toast temp = Toast.makeText(Main_docente.this, "El usuario y contraseña son incorrectos", Toast.LENGTH_SHORT);
temp.show();
}
}
});
}
}
Registration.java:
package joinder.proyecto;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Main_formulario_docente extends AppCompatActivity {
DatabaseHelper helper = new DatabaseHelper(this);
Button btnRegistro;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.formulario_docente);
btnRegistro = (Button)findViewById(R.id.B_signupdocente);
btnRegistro.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText name = (EditText)findViewById(R.id.TF_namedocente);
EditText uname = (EditText)findViewById(R.id.TF_unamedocente);
EditText email = (EditText)findViewById(R.id.TF_emaildocente);
EditText pass1 = (EditText)findViewById(R.id.TF_passdocente);
EditText pass2 = (EditText)findViewById(R.id.TF_passdocente2);
String namestr = name.getText().toString();
String unamestr = uname.getText().toString();
String emailstr = email.getText().toString();
String pass1str = pass1.getText().toString();
String pass2str = pass2.getText().toString();
if (!pass1str.equals(pass2str)){
Toast pass = Toast.makeText(Main_formulario_docente.this, "Las contraseñas no coinciden", Toast.LENGTH_SHORT);
pass.show();
}
else{
Usuario c = new Usuario();
c.setName(namestr);
c.setUname(unamestr);
c.setEmail(emailstr);
c.setPass(pass1str);
helper.insertUsuario(c);
Intent sg = new Intent(Main_formulario_docente.this, MainActivity.class);
startActivity(sg);
}
}
});
}
}
Registry XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/screen_docente"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#3399cc"
tools:context="joinder.proyecto.Main_docente">
<Button
android:id="@+id/B_logindocente"
android:layout_width="340dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@drawable/border_radius_2"
android:onClick="onButtonClick"
android:padding="15dp"
android:text="ENTRAR"
android:textColor="#ffffff"
android:textSize="15dp"
android:textStyle="normal|bold" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="350dp"
android:orientation="vertical"
android:background="@drawable/radius"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="35dp">
<TextView
android:text="Iniciar Sesion"
android:textColor="#3399cc"
android:textSize="30dp"
android:textAlignment="center"
android:padding="20dp"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:fontFamily="sans-serif"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView2" />
<TextView
android:id="@+id/textView4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Docente"
android:textColor="#d83399cc"
android:textStyle="bold|italic" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="6sp"
android:layout_margin="10dp"
android:background="@color/colorAccent" />
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp">
<EditText
android:id="@+id/TF_userdocente"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="80dp"
android:focusableInTouchMode="true"
style="@style/AppTheme"
android:fontFamily="sans-serif"
android:hint="Nombre :"
android:imeOptions="actionDone"
android:inputType="textAutoComplete"
android:maxLength="30"
android:singleLine="true"
android:textColor="#3399cc"
android:textColorHint="#3399cc" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/contraseña_docente"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
style="@style/AppTheme"
android:focusableInTouchMode="true"
android:fontFamily="sans-serif"
android:hint="Ingrese Contraseña :"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:maxLength="10"
android:singleLine="true"
android:textColor="#3399cc"
android:textColorHint="#3399cc"/>
</android.support.design.widget.TextInputLayout>
</LinearLayout>
</RelativeLayout>
Logcat: (New Error)
android.database.sqlite.SQLiteException: no such column: uname (code 1):, while compiling: select uname, pass fromUsuario
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316) at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255) at joinder.proyecto.DatabaseHelper.searchPass(DatabaseHelper.java:66) at joinder.proyecto.Main_docente$1.onClick(Main_docente.java:34) at android.view.View.performClick(View.java:4761) at android.view.View$PerformClick.run(View.java:19767) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5312) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
DatabaseHelper:
import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;
/ ** * Created by SORAIDA LEGUIZAMON on 03/30/2017. * /
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION=1;
private static final String DATABASE_NAME="Usuario.db";
private static final String TABLE_NAME="Usuario";
private static final String COLUMN_ID="id";
private static final String COLUMN_NAME="name";
private static final String COLUMN_UNAME="uname";
private static final String COLUMN_EMAIL="email";
private static final String COLUMN_PASS="pass";
SQLiteDatabase db;
private static final String TABLE_CREATE="create table Usuario (id integer primary key not null, "
+ "name text not null, uname text not null, email text not null, pass text not null); ";
public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db){
db.execSQL(TABLE_CREATE);
this.db = db;
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
String query = "DROP TABLE IF EXISTS"+ TABLE_NAME;
db.execSQL(query);
this.onCreate(db);
}
public void insertUsuario(Usuario c){
db = this.getWritableDatabase();
ContentValues values = new ContentValues();
String query = "select * from Usuario";
Cursor cursor = db.rawQuery(query, null);
int count = cursor.getCount();
values.put(COLUMN_ID, count);
values.put(COLUMN_NAME, c.getName());
values.put(COLUMN_UNAME, c.getUname());
values.put(COLUMN_EMAIL, c.getEmail());
values.put(COLUMN_PASS, c.getPass());
db.insert(TABLE_NAME, null, values);
db.close();
}
public String searchPass(String uname){
db = this.getReadableDatabase();
String query ="select uname, pass from"+TABLE_NAME;
Cursor cursor = db.rawQuery(query, null);
String a,b;
b = "not found";
if (cursor.moveToFirst()){
do {
a = cursor.getString(0);
if (a.equals(uname)){
b = cursor.getString(1);
break;
}
}while (cursor.moveToNext());
}
return b;
}
}