Android SQLite Вставить метод Ошибка? - PullRequest
0 голосов
/ 05 октября 2011

Активность:

package hi.com;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class TestsqliteActivity extends Activity {
       /** Called when the activity is first created. */

    EditText inputContent1, inputContent2,inputContent3;
    Button buttonAdd, buttonDeleteAll;
    ListView listContent;

    Cursor cursor;
    SimpleCursorAdapter cursorAdapter;

    private handle mySQLiteAdapter;
    private SQLiteDatabase db;
    private static final String fields[] = {handle.KEY_ID,handle.COMPANY_NAME};
    private ContentValues conValues;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.asdasd);

        inputContent1 = (EditText)findViewById(R.id.content1);
        inputContent2 = (EditText)findViewById(R.id.content2);
        inputContent3 = (EditText)findViewById(R.id.content3);

        buttonAdd = (Button)findViewById(R.id.add);
        listContent = (ListView)findViewById(R.id.contentlist);

        mySQLiteAdapter = new handle(this);
        db = (new handle(this)).getWritableDatabase();
        Cursor data = db.query(handle.COMPANY_TABLE, fields, null, null, null, null, null);

        String[] from = new String[]{handle.COMPANY_NAME};
        int[] to = new int[]{R.id.text1};
        cursorAdapter = new SimpleCursorAdapter(this, R.layout.row, data, from, to);
        listContent.setAdapter(cursorAdapter);

        buttonAdd.setOnClickListener(buttonAddOnClickListener);
    }

    Button.OnClickListener buttonAddOnClickListener
    = new Button.OnClickListener(){
        @Override
        public void onClick(View arg0) {

        saveRecords();
        }
    };


private void updateList() {
    // TODO Auto-generated method stub
      cursor.requery();
}


protected void saveRecords() {
    // TODO Auto-generated method stub

                conValues.put(handle.COMPANY_NAME, inputContent1.getText().toString());


                try {

                    db.insert(handle.COMPANY_TABLE, null, conValues);

                    Log.d("DDMS'ye", "kayit basarili degerini yaz.");

                } catch (SQLiteException e) {

                    Log.d("eHata", e.getLocalizedMessage());

                }

            }

}

Error

ОШИБКА / AndroidRuntime (19930): java.lang.NullPointerException 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): на hi.com.TestsqliteActivity.saveRecords (TestsqliteActivity.java:75) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в hi.com.TestsqliteActivity $ 1.onClick (TestsqliteActivity.java:61) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в android.view.View.performClick (View.java:2408) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в android.view.View $ PerformClick.run (View.java:8816) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в android.os.Handler.handleCallback (Handler.java:587) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в android.os.Handler.dispatchMessage (Handler.java:92) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в android.os.Looper.loop (Looper.java:123) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в android.app.ActivityThread.main (ActivityThread.java:4627) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в java.lang.reflect.Method.invokeNative (родной метод) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в java.lang.reflect.Method.invoke (Method.java:521) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) 10-05 12: 01: 31.302: ОШИБКА / AndroidRuntime (19930): в dalvik.system.NativeStart.main (собственный метод)

Пожалуйста, посоветуйте мне, что я сделал неправильно ... спасибо

1 Ответ

1 голос
/ 05 октября 2011

Обязательно инициализируйте объект SQLiteDatabase, а также откройте базу данных.Вот идея класса DatabaseHelper.Вы также можете найти соответствующие фрагменты кода для этого класса.

public DatabaseHelper(Context aContext)
{

    sqlDB = aContext.openOrCreateDatabase(DatabaseName, SQLiteDatabase.CREATE_IF_NECESSARY, null);

    OpenHelper openHelper = new OpenHelper(aContext, sqlDB);

    sqlDB = openHelper.getWritableDatabase();
}

Здесь sqlDB - это ваш объект SQLiteDatabase.А OpenHelper - это вспомогательный класс для открытия базы данных.

OpenHelper(Context context, SQLiteDatabase sql_db)
    {
        super(context, DatabaseName, null,DatabaseVersion);         
        onCreate(sql_db);
    }

Вы можете реализовать свой собственный конструктор и классы.Получите больше помощи по этому вопросу.Его легко реализовать и обрабатывать с помощью класса DatabaseHelper.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...