db insert处的空指针异常

时间:2011-04-06 11:36:29

标签: android

package com.omkarsoft.ImagePortofolio;

import java.util.ArrayList;

import com.omkarsoft.ImagePortofolio.dataBaseHelper;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class sqlQueries {
     dataBaseHelper database;
     SQLiteDatabase db ;
     UrlList urllist ;

     public sqlQueries( dataBaseHelper dbh , SQLiteDatabase db  )
     {
         database = dbh;
         this.db = db;
     }

      public sqlQueries() {
          System.out.println("no are sqlqueries constructor");
    }

    public void insertIntoCompanyTable( String companyname  ) {

                 db = database.getWritableDatabase(); // this works fine here
            ContentValues values = new ContentValues();
            values.put(dataBaseHelper.COMPANY_NAME, companyname);
            System.out.println(values);
            db.insert(dataBaseHelper.COMPANY_LIST, null, values);
          }

    public int getCompanyID( String companyName)
    {
        int id = 0 ;
        Cursor c = null;

            try {
            db = database.getReadableDatabase(); // this works fine here
                String query = "SELECT company_id FROM company_list WHERE company_name = '"+ companyName +"'";
                c = db.rawQuery(query,null);
            } catch (Exception e) {
                System.out.println("In getCompanyID : " +e);
            }

        if (c != null ) {
            if  (c.moveToFirst()) {
                id = c.getInt(c.getColumnIndex("company_id"));
            } 
        }
        return id;
    }

    public int getCompanies( String comp) {
        int id = 0;
        Cursor c = null;
        ArrayList<String> names = new ArrayList<String>();

        try {
            db = database.getReadableDatabase(); // this works fine here
            String query = "SELECT * FROM company_list ";
            c = db.rawQuery(query, null);
        } catch (Exception e) {
            System.out.println(e);
        }

            if (c != null) {

                if (c.getCount() == 0)
                    id = 1;
                else {
                    if (c.moveToFirst()) {

                        do {
                            String name = c.getString(c.getColumnIndex("company_name"));
                            names.add(name);
                        } while (c.moveToNext());
                    }

                    if( names.contains(comp))
                        id = 0;
                        else
                        id = 1 ;
                }
            }

        return id;
    }

      public void insertIntoImageTable( int companyid , String productname , String productdesc , byte[] bmp )
      {
            try
            {
                        db = database.getWritableDatabase(); // blows here i get a NPE
                ContentValues values = new ContentValues();
                values.put(dataBaseHelper.COMPANY_ID, companyid);           
                values.put(dataBaseHelper.PRODUCT_NAME, productname);
                values.put(dataBaseHelper.PRODUCT_DESCRIPTION, productdesc);
                values.put(dataBaseHelper.PRODUCT_IMAGE, bmp);
                System.out.println(values);
                db.insertOrThrow(dataBaseHelper.IMAGE_DATA, null, values);
                System.out.println(values);
            }
            catch( Exception e)
            {
                e.printStackTrace();
            }
      }
}

2 个答案:

答案 0 :(得分:1)

您需要首先打开数据库进行写作,例如

SQLiteDatabase db = tdHelper.getWritableDatabase();

tdHelper

的实例
private static class TweetDBOpenHelper extends SQLiteOpenHelper 

答案 1 :(得分:0)

尝试使用db.insertString.valueOf();中放入的每个参数进行logcat跟踪。然后,您将看到哪个参数为null