0

dbHelper クラスのコードは次のとおりです。

package com.example.emp_management;


import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {

public DatabaseHelper(Context context) {
    super(context, dbName, null, 1);
    // TODO Auto-generated constructor stub
}
static final String dbName="EmployeeManagementSystem";
static final String Login_Table="Login_Authentication";
static final String colID="ID";
static  final String colUsername="Username";
static final String colPassword="Passwrod";

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
//db.execSQL("CREATE TABLE" + Login_Table+ "(" +
    //       colID + "INTEGER PRIMARY KEY AUTOINCREMENT, " +
        //  colUsername + "TEXT NOT NULL," +
          // colPassword + "TEXT NOT NULL);"                    
            //);
//db.execSQL("CREATE TABLE "+Login_Table+" ("+colID+ " INTEGER PRIMARY KEY AUTOINCREMENT ,"+
    //    colUsername+ " TEXT ,"+ colPassword + "TEXT");
db.execSQL("CREATE TABLE " + Login_Table + "(colID INTEGER PRIMARY KEY AUTOINCREMENT, colUsername TEXT NOT NULL,colPassword TEXT NOT NULL);");
Log.w("Come aww man", "Database Table Created!!");


}
    @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + "Login_Authentication");
onCreate(db);
}
public void insert_new_user(String username,String password)
{
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(DatabaseHelper.colUsername,username);
    cv.put(DatabaseHelper.colPassword,password);
    db.insert(Login_Table, null, cv);
    db.close();
    }
}

作成したテーブルに新しい従業員を追加するために使用しているコードは次のとおりです。

 package com.example.emp_management;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Adding_Employee extends Activity{

@Override
protected void onCreate(Bundle aglakaam) {
    // TODO Auto-generated method stub
    super.onCreate(aglakaam);

    setContentView(R.layout.add_employee);
    final EditText new_user = (EditText) findViewById(R.id.editText1);
    final EditText new_pass = (EditText) findViewById(R.id.editText2);
    final Button create_acc = (Button) findViewById(R.id.creat_acc);

    create_acc.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        DatabaseHelper accessing_db = new DatabaseHelper(Adding_Employee.this);
        accessing_db.insert_new_user(new_user.getText().toString(), new_pass.getText().toString());
        Toast.makeText(getApplicationContext(), "New User Has Been Created!!", Toast.LENGTH_SHORT).show();

    }
});
}


}

そして、ここに私のlogcatがあります:

02-20 02:42:26.491: E/Database(384): Error inserting Passwrod=1234 Username=sjdf
02-20 02:42:26.491: E/Database(384): android.database.sqlite.SQLiteException: table     Login_Authentication has no column named Passwrod: , while compiling: INSERT INTO Login_Authentication(Passwrod, Username) VALUES(?, ?);
02-20 02:42:26.491: E/Database(384):    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)

ここで私にとって奇妙なことは、ユーザー名の列が存在することです。ユーザー名ではなくパスワードの例外のみが表示されるのはなぜですか。また、パスワード列が存在する場合でも、ここで例外がスローされるのはなぜですか。助けてください!

4

3 に答える 3

1

たぶん、colID、colUsername、colPasswordの後にスペースが必要です

db.execSQL( "CREATE TABLE" + Login_Table + "(" + colID + "INTEGER PRIMARY KEY AUTOINCREMENT、" + colUsername + "TEXT NOT NULL、" + colPassword + "TEXT NOT NULL);");

于 2013-02-19T22:25:45.310 に答える
1

colPassword、colUsername、およびcolIDという名前の列を作成しています

db.execSQL("CREATE TABLE " + Login_Table + "(colID INTEGER PRIMARY KEY AUTOINCREMENT, colUsername TEXT NOT NULL,colPassword TEXT NOT NULL);");

次に、を使用してそれらにアクセスしようとします

static final String colID="ID";
static  final String colUsername="Username";
static final String colPassword="Passwrod"; 

Passwrod!= colPassword ..なので、もちろんその列を見つけることはできません。

このようなことを試して、テーブルにアクセスするときにテーブルを作成するときに、列に同じ名前を使用していることを確認してください。変更を表示するには、DBバージョンを増やす必要があります。

db.execSQL("CREATE TABLE " + Login_Table + "(" + colID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + colUsername + " TEXT NOT NULL," + colPassword + " TEXT NOT NULL);");
于 2013-02-19T21:57:51.323 に答える
-1

パスワードのつづりを Passwrod と間違えました。単純なタイプミス。また、Java は可変文字列補間を行わないため、連結を使用する必要があります。

于 2013-02-19T21:57:05.157 に答える