数据库插入时出现空指针异常 package com.omkarsoft.ImagePortofolio; 导入java.util.ArrayList; 导入com.omkarsoft.ImagePortofolio.dataBaseHelper; 导入android.content.ContentValues; 导入android.database.Cursor; 导入android.database.sqlite.SQLiteDatabase; 公共类sqlQueries{ 数据库助手数据库; sqlitedb数据库; UrlList UrlList; 公共sqlQueries(dataBaseHelper dbh、SQLiteDatabase db) { 数据库=胸径; 这个.db=db; } 公共sqlQueries(){ System.out.println(“不是sqlqueries构造函数”); } public void insertIntoCompanyTable(字符串companyname){ db=database.getWritableDatabase();//在这里可以正常工作 ContentValues=新的ContentValues(); value.put(dataBaseHelper.COMPANY\u NAME,companyname); System.out.println(值); db.insert(dataBaseHelper.COMPANY_LIST,null,value); } public int getCompanyID(字符串companyName) { int id=0; 光标c=null; 试一试{ db=database.getReadableDatabase();//在这里可以正常工作 String query=“从公司名称='”+companyName+“'的公司列表中选择公司id”; c=db.rawQuery(查询,空); }捕获(例外e){ System.out.println(“In-getCompanyID:+e”); } 如果(c!=null){ if(c.moveToFirst()){ id=c.getInt(c.getColumnIndex(“公司id”); } } 返回id; } 上市公司(字符串公司){ int id=0; 光标c=null; ArrayList name=新的ArrayList(); 试一试{ db=database.getReadableDatabase();//在这里可以正常工作 String query=“从公司列表中选择*”; c=db.rawQuery(查询,空); }捕获(例外e){ 系统输出打印ln(e); } 如果(c!=null){ 如果(c.getCount()==0) id=1; 否则{ if(c.moveToFirst()){ 做{ 字符串名称=c.getString(c.getColumnIndex(“公司名称”); 名称。添加(名称); }而(c.moveToNext()); } if(名称.包含(成分)) id=0; 其他的 id=1; } } 返回id; } public void insertIntoImageTable(int companyid,String productname,String productdesc,byte[]bmp) { 尝试 { db=database.getWritableDatabase();//这里我得到一个NPE ContentValues=新的ContentValues(); value.put(dataBaseHelper.COMPANY\u ID,companyid); value.put(dataBaseHelper.PRODUCT\u名称,产品名称); value.put(dataBaseHelper.PRODUCT\u说明,productdesc); value.put(dataBaseHelper.PRODUCT_IMAGE,bmp); System.out.println(值); db.insertOrThrow(dataBaseHelper.IMAGE_数据,null,值); System.out.println(值); } 捕获(例外e) { e、 printStackTrace(); } } }
只要试着用数据库插入时出现空指针异常 package com.omkarsoft.ImagePortofolio; 导入java.util.ArrayList; 导入com.omkarsoft.ImagePortofolio.dataBaseHelper; 导入android.content.ContentValues; 导入android.database.Cursor; 导入android.database.sqlite.SQLiteDatabase; 公共类sqlQueries{ 数据库助手数据库; sqlitedb数据库; UrlList UrlList; 公共sqlQueries(dataBaseHelper dbh、SQLiteDatabase db) { 数据库=胸径; 这个.db=db; } 公共sqlQueries(){ System.out.println(“不是sqlqueries构造函数”); } public void insertIntoCompanyTable(字符串companyname){ db=database.getWritableDatabase();//在这里可以正常工作 ContentValues=新的ContentValues(); value.put(dataBaseHelper.COMPANY\u NAME,companyname); System.out.println(值); db.insert(dataBaseHelper.COMPANY_LIST,null,value); } public int getCompanyID(字符串companyName) { int id=0; 光标c=null; 试一试{ db=database.getReadableDatabase();//在这里可以正常工作 String query=“从公司名称='”+companyName+“'的公司列表中选择公司id”; c=db.rawQuery(查询,空); }捕获(例外e){ System.out.println(“In-getCompanyID:+e”); } 如果(c!=null){ if(c.moveToFirst()){ id=c.getInt(c.getColumnIndex(“公司id”); } } 返回id; } 上市公司(字符串公司){ int id=0; 光标c=null; ArrayList name=新的ArrayList(); 试一试{ db=database.getReadableDatabase();//在这里可以正常工作 String query=“从公司列表中选择*”; c=db.rawQuery(查询,空); }捕获(例外e){ 系统输出打印ln(e); } 如果(c!=null){ 如果(c.getCount()==0) id=1; 否则{ if(c.moveToFirst()){ 做{ 字符串名称=c.getString(c.getColumnIndex(“公司名称”); 名称。添加(名称); }而(c.moveToNext()); } if(名称.包含(成分)) id=0; 其他的 id=1; } } 返回id; } public void insertIntoImageTable(int companyid,String productname,String productdesc,byte[]bmp) { 尝试 { db=database.getWritableDatabase();//这里我得到一个NPE ContentValues=新的ContentValues(); value.put(dataBaseHelper.COMPANY\u ID,companyid); value.put(dataBaseHelper.PRODUCT\u名称,产品名称); value.put(dataBaseHelper.PRODUCT\u说明,productdesc); value.put(dataBaseHelper.PRODUCT_IMAGE,bmp); System.out.println(值); db.insertOrThrow(dataBaseHelper.IMAGE_数据,null,值); System.out.println(值); } 捕获(例外e) { e、 printStackTrace(); } } },android,Android,只要试着用String.valueOf()对放入db的每个参数进行日志记录即可然后您将看到哪个参数是null您需要打开数据库以便首先写入,例如 package com.omkarsoft.ImagePortofolio; import java.util.ArrayList; import com.omkarsoft.ImagePortofolio.dataBaseHelper; import android.content.ContentValues; import android.da
String.valueOf()对放入db的每个参数进行日志记录即可
然后您将看到哪个参数是null
您需要打开数据库以便首先写入,例如
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();
}
}
}
和tdHelper
作为
SQLiteDatabase db = tdHelper.getWritableDatabase();
我已经发布了完整的班级档案,请看一看
private static class TweetDBOpenHelper extends SQLiteOpenHelper