1

Hey Folks は、ログイン認証のために 2 つのアカウントをテーブルに手動で挿入し、その後、アカウントの種類に基づいていくつかの作業を行う単純なアプリケーションを作成しています。Sqlite 関数の設定に問題があります。1 つのパッケージ com.example.emp_management があり、その中に MainActivity.java と Database_Wrap.java の 2 つのクラスがあります。Database_Wrap.java のコードを以下に示します。

package com.example.emp_management;


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Database_Wrap            //hotornot
{
public static final String Database_name = "Employee_Managament_System";
public Sql_Lite_Work OurHelper;
public  final Context OurContext;
public SQLiteDatabase ourDatabase;

public static class Sql_Lite_Work extends SQLiteOpenHelper
{   //dbhelper = sql_lite_work

    public Sql_Lite_Work(Context context) 
    {
        super(context,Database_name , null, 1);
        // TODO Auto-generated constructor stub
    }
    @Override
    public void onCreate(SQLiteDatabase db)
    {
        // TODO Auto-generated method stub

        db.execSQL("CREATE TABLE" + "Login_Authentication"+ "(" +
               "ID" + "INTEGER PRIMARY KEY AUTOINCREMENT, " +
                "UserName" + "TEXT NOT NULL," +
               "Password" + "TEXT NOT NULL);"                   
                );

    }
    @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 Database_Wrap(Context c)
{
    OurContext = c;
}
public Database_Wrap Open()
{
    OurHelper = new Sql_Lite_Work(OurContext);
    ourDatabase = OurHelper.getWritableDatabase();
    return this;
}
public void close()
{
    OurHelper.close();
}
}

次にやりたいことは、次のようなことをしたいメインアクティビティです。

Database_Wrap entry= new Database_Wrap(MainActivity.this);

次に、Database_Wrap に記述された関数にアクセスして、データベースを開き、管理者および他のユーザーのテーブルに値を書き込みます。

entry.Open();

しかし、Eclipseでは、エントリ時にopen関数にアクセスできません。ここで何が悪いのかわかりません。初心者です。何かを忘れているのかもしれません。よろしければご覧くださいよろしくお願いします!

4

2 に答える 2

1

Java では大文字と小文字が区別されます。試す:

Database_Wrap entry= new Database_Wrap(MainActivity.this);

あなたwの は両方ともWrap小文字でした。

于 2013-02-17T15:25:26.910 に答える
0

あなたのコードを小さなテスト プロジェクトに入れました。それはうまくコンパイルされます。次に、同じプロジェクトのアクティビティにこのコードを追加しました。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Database_Wrap entry= new Database_Wrap(MainActivity.this);
    entry.Open();
}

それも、うまくいきます。

コードの外観から判断すると (まったく問題はなく、スタイルが経験豊富な Java 開発者をうんざりさせるだけです)、あなたは Java の初心者です。おそらく日食も。Eclipse は奇妙で、ファンキーなことを常に行っています。短期的な異常に遭遇しただけかもしれません。

于 2013-02-17T17:12:29.337 に答える