私は構築しているアプリケーションを持っており、登録とログインがあり、メインアプリケーションには2つのテーブルがあります.1つは登録とログイン、もう1つはデータ操作のためのテーブル。ログインを開くとアプリケーションがクラッシュし、サインアップボタンをタップするとクラッシュします。ここでは、データベースのクラスログインボタンをクリックして登録ボタンをクリックするとエラーが表示されます
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.sql.SQLException;
/**
* Created by WANDIE on 7/28/2016.
*/
public class DbHelperOperations {
//this is the class for datbase connectivity
public static final String KEY_ROWID = "_id";
public static final String KEY_NAME = "persons_name";
public static final String KEY_AGE = "persons_age";
public static final String KEY_SEX = "persons_sex";
public static final String KEY_CONTACT = "persons_contact";
public static final String KEY_CIVIL = "persons_civli_status";
public static final String KEY_WORK = "persons_work";
public static final String KEY_ADDRESS = "persons_address";
//values of the registration login application
public static final String COLUMN_ID = "id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_EMAIL = "email";
public static final String COLUMN_USERNAME = "uname";
public static final String COLUMN_PASSWORD = "pass";
//set up database credentials
private static final String DATABASE_NAME = "HotOrNot";
private static final String DATABASE_TABLE = "peopleTable";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "contacts";
DbHelper ourHelper;
private Context ourContext;
SQLiteDatabase ourDatabase;
public DbHelperOperations(Context ourContext) {
this.ourContext = ourContext;
}
public DbHelperOperations open() throws SQLException{
ourHelper = new DbHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
return this;
}
public void close()
{
ourHelper.close();
}
public void createEntry(Patient patient){//method for createng entry in databse for name and hotness
//insert the content values to the datbase
ContentValues cvs=new ContentValues();
cvs.put(KEY_NAME,patient.getName());
cvs.put(KEY_SEX,patient.getSex());
cvs.put(KEY_AGE,patient.getAge());
cvs.put(KEY_CONTACT,patient.getContact());
cvs.put(KEY_CIVIL,patient.getCiviStatus());
cvs.put(KEY_WORK,patient.getNatureOfWork());
cvs.put(KEY_ADDRESS,patient.getAddress());
ourDatabase.insert(DATABASE_TABLE,null,cvs);
}
//retrieve from database
public String getData() {
String result="";
String query="SELECT * FROM "+DATABASE_TABLE;
Cursor c=ourDatabase.rawQuery(query,null);
while(c.moveToNext()){
result+=c.getString(0)+" "+c.getString(1)+" "+c.getString(2)+" "+c.getString(3)+ ""+c.getString(4)+ "" + c.getString(5)+""+ c.getString(6)+""+c.getString(7)+ " \n";
}
if(result.equals("")){
return "no data";
}
/*
for(c.moveToFirst();!c.isAfterLast();c.moveToNext())
{
result = result + c.getString(iRow) + " " + c.getString(iname) + " " + c.getString(ihotness) + "\n";
}
*/
return result;
}
public String getName(long l) throws SQLException {
// String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_HOTNESS};
String str="SELECT * FROM "+DATABASE_TABLE+" WHERE "+KEY_ROWID+"="+l;
Cursor c = ourDatabase.rawQuery(str,null);
if(c.moveToFirst())
{
String name = c.getString(1);
return name;
}
return "";
}
public String getHotness(long l)throws java.sql.SQLException {
String[] columns = new String[]{ KEY_ROWID, KEY_NAME, };
Cursor c = ourDatabase.query(DATABASE_TABLE,columns,KEY_ROWID + "=" + l,null,null,null,null);
if(c.moveToFirst())
{
String hotness = c.getString(2);
return hotness;
}
return "";
}
public void updateEntry(long lRow, String mName, String mHotness) throws java.sql.SQLException {
ContentValues cvUpdate = new ContentValues();
cvUpdate.put(KEY_NAME,mName);
cvUpdate.put(KEY_AGE,mHotness);
ourDatabase.update(DATABASE_TABLE,cvUpdate,KEY_ROWID + "=" + lRow,null);
}
public void deleteEntry(long lRow1) throws java.sql.SQLException{
String sql="DELETE FROM "+DATABASE_TABLE+" WHERE "+KEY_ROWID+"="+lRow1;
// ourDatabase.delete(DATABASE_TABLE,KEY_ROWID + " =" + lRow1,null);
ourDatabase.execSQL(sql);
}
private static class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//called when u create a database
db.execSQL("CREATE TABLE IF NOT EXISTS " + DATABASE_TABLE + " (" + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_NAME + " TEXT NOT NULL, " + KEY_AGE + " INTEGER , " + KEY_SEX + " TEXT NOT NULL, " + KEY_CONTACT + " TEXT NOT NULL, " + KEY_CIVIL + " TEXT NOT NULL, " + KEY_WORK + " TEXT NOT NULL, " + KEY_ADDRESS + " TEXT NOT NULL) ");
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY, " + COLUMN_NAME + " TEXT NOT NULL, " + COLUMN_EMAIL + " TEXT NOT NULL , " + COLUMN_USERNAME + " TEXT NOT NULL, " + COLUMN_PASSWORD + " TEXT NOT NULL) ");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//METHOD IS USED WHEN THE DATBASE HAS already been created
db.execSQL("DROP TABLE IF EXISTS " +DATABASE_TABLE);
onCreate(db);
String query = "DROP TABLE IF EXISTS"+TABLE_NAME;
db.execSQL(query);
this.onCreate(db) ;
}
}
public void insertContact(Contact c) {
ourDatabase = ourHelper.getWritableDatabase();
ContentValues values = new ContentValues();
String query = "SELECT * FROM contacts";
Cursor cursor = ourDatabase.rawQuery(query,null);
int count = cursor.getCount();
values.put(COLUMN_ID,count);
values.put(COLUMN_NAME,c.getName());
values.put(COLUMN_EMAIL,c.getEmail());
values.put(COLUMN_USERNAME,c.getUname());
values.put(COLUMN_PASSWORD,c.getPass());
//this statement bellow inserts the contact object into the datbase
ourDatabase.insert(TABLE_NAME,null,values);
ourDatabase.close();
}
//database helper method to search for the password
public String searchPass(String uname) {
ourDatabase = ourHelper.getReadableDatabase();
String query = "SELECT uname,pass FROM "+TABLE_NAME;
Cursor cursor = ourDatabase.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;
}
}
このため私のコードは、ログインクラス
public class MainLoginReg extends AppCompatActivity implements View.OnClickListener{
EditText editUsername,editPasslogin;
Button btnLogin,btnSignup;
DatabaseHelper helper = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_login_reg);
btnLogin = (Button)findViewById(R.id.btnLogin);
btnSignup = (Button)findViewById(R.id.btnSignup_login);
editUsername = (EditText)findViewById(R.id.editUsername_login);
editPasslogin = (EditText)findViewById(R.id.editPassword_logiin);
btnLogin.setOnClickListener(this);
editPasslogin.setOnClickListener(this);
editUsername.setOnClickListener(this);
btnSignup.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId())
{
case R.id.btnLogin:
//Toast.makeText(MainLoginReg.this,"correct credentials",Toast.LENGTH_SHORT).show();
String str = editUsername.getText().toString();
String pass = editPasslogin.getText().toString();
String password = helper.searchPass(str);
if (pass.equals(password))
{
Intent openLogin = new Intent(MainLoginReg.this,Display.class);
openLogin.putExtra("Username",str);
startActivity(openLogin);
}
else
{
Toast.makeText(MainLoginReg.this,"Username and passwords don't match ",Toast.LENGTH_SHORT).show();
}
break;
case R.id.btnSignup_login:
Toast.makeText(MainLoginReg.this,"Please signup here",Toast.LENGTH_SHORT).show();
Intent i = new Intent(MainLoginReg.this,Signup.class);
startActivity(i);
break;
}
}
}
と登録のためのコードは、あなたがすでに定義
public class Signup extends AppCompatActivity implements View.OnClickListener{
Button signup;
EditText editname,editemail,editusername,editpasswd,editConfirmpass;
DatabaseHelper helper = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
signup = (Button)findViewById(R.id.btnSignup);
editname = (EditText)findViewById(R.id.editName);
editemail = (EditText)findViewById(R.id.editEmail);
editusername = (EditText)findViewById(R.id.editUsername);
editpasswd = (EditText)findViewById(R.id.editPassword);
editConfirmpass = (EditText)findViewById(R.id.editConfirmPass);
signup.setOnClickListener(this);
editname.setOnClickListener(this);
editemail.setOnClickListener(this);
editusername.setOnClickListener(this);
editpasswd.setOnClickListener(this);
editConfirmpass.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId())
{
case R.id.btnSignup:
String namestr = editname.getText().toString();
String emailstr = editemail.getText().toString();
String unamestr = editusername.getText().toString();
String pass1str = editpasswd.getText().toString();
String pass2str = editConfirmpass.getText().toString();
if (!pass1str.equals(pass2str))
{
Toast.makeText(Signup.this,"Unsuccessful! Passwords dont match",Toast.LENGTH_SHORT).show();
// pass.show();
/*Dialog d = new Dialog(this);
d.setTitle("Successful");
TextView tv = new TextView(this);
tv.setText("You have created an account");
d.setContentView(tv);
d.show();*/
}
else
{
//insert the information in the database
Toast.makeText(Signup.this,"Signup Successful",Toast.LENGTH_SHORT).show();
// Intent i = new Intent(Signup.this,)
//we use the object of contact class
Contact c = new Contact();
c.setName(namestr);
c.setEmail(emailstr);
c.setUname(unamestr);
c.setPass(pass1str);
//insert into values db
helper.insertContact(c);
}
break;
}
}
}
logcat – Lino
方法com.example.hacker.nofityme.Signup.access $スーパー 08-11 16投稿してください:57:55.557 19029から19029/com.example.hackerを.nofityme W/dalvikvm:VFY:仮想メソッドを解決できません75:Landroid/app/Activity; .getMediaController()Landroid/media/session/MediaController; 08-11 16:57:55.557 19029-19029/com.example.hacker.nofityme D/dalvikvm:VFY:オペコード0x6fを0x0d4cに置き換えます。 08-11 16:57:55.557 19029-19029/com.example.hacker。 nofityme I/dalvikvm:メソッドcom.example.hacker.nofityme.Signup.accessから参照されるメソッドandroid.app.Activity.getSearchEventを見つけることができませんでした。$ super – wandie