0

データベース SQLlite にデータを書き込むための新しいインスタンスの作成中にエラーが発生しました

これは私のデータベースクラスのコードです

    package com.example.tttt;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class info {

    public static final String key_nom = "nom_personne";
    public static final String key_id = "id_personne";
    public static final String key_prenom = "prenom_personne";
    private static final String DATABASE_NAME = "infodb";
    private static final String DATABASE_TABLE = "infotable";
    private static final int DATABASE_VERSION = 1 ;
    private DbHelper ourHelper;
    private Context ourContext ;
    private SQLiteDatabase ourDatabase ;

    private static class DbHelper extends SQLiteOpenHelper {

        public DbHelper(Context context) {
            super(context, DATABASE_NAME,null , DATABASE_VERSION );
            // TODO Auto-generated constructor stub
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            db.execSQL( "CREATE TABLE " + DATABASE_TABLE + " (" +
        key_id  + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        key_nom + " TEXT NOT NULL, " +
        key_prenom + " TEXT NOT NULL);"

                    );

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
            // TODO Auto-generated method stub
            db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
            onCreate(db);
        }


}
public info open() throws SQLException{
    ourHelper = new DbHelper(ourContext);
    ourDatabase = ourHelper.getWritableDatabase();
    return this;
}
    public void close(){
    ourHelper.close();
}
    public long createEntry(String name, String prenom) {
        // TODO Auto-generated method stub
        ContentValues cv = new ContentValues();
        cv.put(key_nom, name);
        cv.put(key_prenom, prenom);
        return ourDatabase.insert(DATABASE_TABLE, null, cv);

    }

私のクラスの活動で私は書きました

 info entry = new info(this);
            entry.open();
            entry.createEntry(name , prenom );
            entry.close();

メッセージエラーでエラーが発生しまし info entry = new info(this); た:「コンストラクター情報(新しいView.OnClickListener(){})は未定義です」

情報に変更したときentry = new info(intro.this);

私が得た:「コンストラクタ情報(イントロ)は未定義です」

ユーザーから情報を取得してデータベースに送信する完全なイントロ アクティビティ

package com.example.tttt;

import com.example.tttt.R.layout;

import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.DropBoxManager.Entry;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class intro extends Activity  {
Button sqlupdate,sqlview,sqlsearch;
EditText sqlnom, sqlprenom,sqltextsearch ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
      setContentView(R.layout.intro);
      sqlnom = (EditText)findViewById(R.id.nomenter);
      sqlprenom = (EditText)findViewById(R.id.prenomenter);
      sqlupdate =        (Button) findViewById(R.id.button1);
      sqlview =        (Button) findViewById(R.id.button2);
    //  sqlsearch =        (Button) findViewById(R.id.button3);
   //   sqltextsearch = (EditText)findViewById(R.id.editText1);


      sqlupdate.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            boolean diditwork = true ;

            try{
            String name = sqlnom.getText().toString();
            String prenom = sqlprenom.getText().toString(); 

            entry = new info();
        entry.open();
        entry.createEntry(name , prenom );
        entry.close();

            }catch (Exception e ){

          diditwork = false ;
          String error = e.toString();
          Dialog d = new Dialog(intro.this); 
            d.setTitle(" merde ");
            TextView tv = new TextView(intro.this);
            tv.setText(error);
            d.setContentView(tv);
            d.show();
            }finally{
         if (diditwork){
            Dialog d = new Dialog(intro.this); 
            d.setTitle(" okkk ");
            TextView tv = new TextView(intro.this);
            tv.setText(" ok yes ");
            d.setContentView(tv);
            d.show();
         }

            }
        }


    });
      sqlview.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent open = new Intent("android.intent.action.SQLVIEW");
            startActivity(open);
        }



    });


    sqlsearch.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
     /*String s = sqltextsearch.getText().toString();

            info se = new info();
            se.open();
            String returne = se.search();
       */     




        }
    });


    }


}
4

2 に答える 2

1

パラメータなしで info クラスを初期化する必要があります。

info entry = new info();

ところで。クラス名では、最初の文字を大文字で書くのが一般的です。Info

さらに。アプリケーションにこれ以上コードがない場合は、 hereinfoがスローされますNullPointerExceptionourDatabase.insert(DATABASE_TABLE, null, cv);

于 2013-08-15T14:28:30.500 に答える
0

ここのクラス情報には、タイプIntroの引数を持つコンストラクターはありません

Class Info でクラス Intro のインスタンスが本当に必要な場合は作成します。

public Info(Intro intro){
    }

Else 引数を渡さずにコンストラクターを作成します。

 Info entry = new Info(this);

常に命名規則に従うようにしてください。好きなようにプログラミングするのは良い方法ではありません。http://www.oracle.com/technetwork/java/codeconv-138413.html

于 2013-08-15T14:58:17.450 に答える