Java 创建新实例SQLITE时出错

Java 创建新实例SQLITE时出错,java,android,sqlite,instance,Java,Android,Sqlite,Instance,创建新实例以将数据写入数据库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.SQLiteDatab

创建新实例以将数据写入数据库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 View.OnClickListener(){})未定义”

当我更改为info
entry=新信息时(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();
       */     




        }
    });


    }


}

必须初始化不带参数的info类:

info entry = new info();
顺便说一句,在类名中,第一个字母大写是很常见的:
Info


而且。如果
info
中没有更多代码,应用程序将在这里
ourDatabase.insert(DATABASE_TABLE,null,cv)抛出
NullPointerException

在类Info中,没有带Intro类型参数的构造函数

如果您真的需要在class Info中有class Intro的实例,请创建一个

public Info(Intro intro){
    }
否则,在不传递任何参数的情况下创建构造函数

 Info entry = new Info(this);

始终尝试遵循命名约定,这不是一个好的编程方式

感谢您在我使用entry=new info()时给出的快速回答;i Get i error:如果我使用info entry=new info(),则无法将条目解析为变量;我没有错误,但在数据库中编写不起作用。你应该从教程开始。您得到的类对任何数据库都不做任何操作。name和prenom不为null?String name=sqlnom.getText().toString();字符串prenom=sqlprenom.getText().toString();在介绍活动中更新了posthi Dillep,感谢您在我的应用程序崩溃信息类中添加带参数的构造函数时给出的答案!!在SQLite教程中,他们没有添加任何构造函数,实例也很好,我不知道我真的很困惑now@user2686117每次初始化类的对象时,它都会调用该类的构造函数。即使您不会在内部创建构造函数,默认情况下也会创建一个没有任何参数的构造函数,并在对象初始化时调用它。这里它生成错误,因为没有具有Intro类型参数的类构造函数。发布初始化时未传递任何参数时出现的错误hi i upload image error@user2686117您是否在类信息中创建了带有参数Intro的构造函数。??公共信息(简介对象名){;}