2013-08-15 3 views
0

у меня есть ошибки, делая создание нового экземпляра для записи данных в моей SQLlite базы данныхПолучение ошибки при создании нового экземпляра SQLITE

это код моего класса базы данных

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(); 
     */  




     } 
    }); 


    } 


} 

ответ

1

вы должны инициализировать инфо класса без параметров:

info entry = new info(); 

кстати. В именах классов принято писать первую букву в верхнем регистре: Info

Кроме того. Если вы не имеете больше кода в info приложение будет бросать NullPointerException здесь ourDatabase.insert(DATABASE_TABLE, null, cv);

+0

спасибо за быстрый ответ, когда я использую entry = new info(); Я получил ошибку i: запись не может быть разрешена переменной, если я использую info entry = new info(); я не получил ошибку, но запись в базу данных не работает – user2686117

+0

вы должны начать с учебника. класс, который вы ничего не делали с какой-либо базой данных. –

+0

no i не опубликовал полный класс – user2686117

0

Здесь в классе Info нет Конструктор с аргументом типа интро

Создать один, если вы действительно необходимо иметь экземпляр класса Intro в информации о классе.

public Info(Intro intro){ 
    } 

Else Создайте конструктор без каких-либо аргументов.

Info entry = new Info(this); 

Всегда старайтесь следовать соглашениям об именах, это не лучший способ программирования любым способом. http://www.oracle.com/technetwork/java/codeconv-138413.html

+0

привет Dillep спасибо за ответ, когда я добавлю конструктор с аргументом в информационном классе, мое крушение приложения! в учебнике SQLite они не добавили конструктора, и экземпляр в порядке, я не знаю, что я действительно запутался сейчас – user2686117

+0

@ user2686117 Каждый раз, когда вы инициализируете объект класса, он вызывает конструктор класса.Даже если вы не создадите конструктор внутри, по умолчанию создается конструктор без какого-либо аргумента и его вызывается, когда происходит инициализация объекта. Здесь он генерирует ошибку, потому что нет конструктора классов с аргументом типа Intro. Опубликовать ошибку, которую вы получите при инициализации u без передачи каких-либо аргументов – Dileep

+0

hi i upload error error http://i1257.photobucket.com/albums/ii518/yassinema1992/error_zps3f8afe7c.png – user2686117