【发布时间】:2014-02-20 03:58:57
【问题描述】:
我在将数据插入数据库时遇到了这个异常。我是 android 初学者,任何人都请帮我解决这个问题......我无法插入数据......我正在发布我的代码和LOGCAT 错误....
公共类 Db 扩展 SQLiteOpenHelper{
Context context;
public static String databasename="modelnew.db";
private static final int SCHEMA_VERSION = 1;
public static String category_table="category";
public static String Id="categoryid";
public static String Name="caregoryname";
public Db(Context context) {
//super(context,Environment.getExternalStorageDirectory()+"/"+databasename, null, 1);
super(context,databasename, null, SCHEMA_VERSION);
// TODO Auto-generated constructor stub
this.context=context;
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String query="create table category_table(Id integer primary key ,Name text)";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
class ProgressTask extends AsyncTask<String, String, JSONObject>
{
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected JSONObject doInBackground(String... args)
{
System.out.println("Inside do inbackground"+ purl);
Jsondbparser jParser = new Jsondbparser();
// Getting JSON from URL
JSONObject json = jParser.getJSONFromUrl(purl);
return json;
}
@Override
protected void onPostExecute(JSONObject json)
{
try
{
System.out.println("returnjson"+json);
// Getting JSON Array from URL
JSONObject json1 = json.getJSONObject("response");
System.out.println(json1.getString("success"));
jsonary = json1.getJSONArray("categoryid");
jsonarr=json1.getJSONArray("categoryname");
for (int i = 0; i < jsonary.length(); i++)
{
categoryId = jsonary.getInt(i);
System.out.println("id-- "+categoryId);
categoryName = jsonarr.getString(i);
System.out.println("id-- "+categoryName);
idlist.add(String.valueOf(categoryId));
list.add(categoryName);
addCategory();
/*db=new Db(con);
Model model=new Model();
model.setcid(categoryId);
model.setcname(categoryName);
addCategory(model);
//close();*/
}
}
catch (JSONException e)
{
e.printStackTrace();
}
}
}
void addCategory()
{
System.out.println("inside insert method");
Db h = new Db(getApplicationContext());
SQLiteDatabase db = h.getWritableDatabase();
for(int j=0;j<=idlist.size();j++)
{
ContentValues values = new ContentValues();
values.put("categoryid", idlist.get(j));//category id
values.put("categoryname", list.get(j)); // Category Name
System.out.println("id ---"+idlist.get(j));
System.out.println("name-----"+list.get(j));
// Inserting Row
db.insert("t_category", null, values);
db.close(); // Closing database connection
System.out.println("before end");
}
}
}
02-20 03:54:17.192: E/AndroidRuntime(931): FATAL EXCEPTION: main
02-20 03:54:17.192: E/AndroidRuntime(931): java.lang.NullPointerException
02-20 03:54:17.192: E/AndroidRuntime(931): at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109)
02-20 03:54:17.192: E/AndroidRuntime(931): at com.example.koto.Jsondb.addCategory(Jsondb.java:133)
02-20 03:54:17.192: E/AndroidRuntime(931): at com.example.koto.Jsondb$ProgressTask.onPostExecute(Jsondb.java:102)
02-20 03:54:17.192: E/AndroidRuntime(931): at com.example.koto.Jsondb$ProgressTask.onPostExecute(Jsondb.java:1)
02-20 03:54:17.192: E/AndroidRuntime(931): at android.os.AsyncTask.finish(AsyncTask.java:631)
02-20 03:54:17.192: E/AndroidRuntime(931): at android.os.AsyncTask.access$600(AsyncTask.java:177)
02-20 03:54:17.192: E/AndroidRuntime(931): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
02-20 03:54:17.192: E/AndroidRuntime(931): at android.os.Handler.dispatchMessage(Handler.java:99)
02-20 03:54:17.192: E/AndroidRuntime(931): at android.os.Looper.loop(Looper.java:137)
02-20 03:54:17.192: E/AndroidRuntime(931): at android.app.ActivityThread.main(ActivityThread.java:5041)
02-20 03:54:17.192: E/AndroidRuntime(931): at java.lang.reflect.Method.invokeNative(Native Method)
02-20 03:54:17.192: E/AndroidRuntime(931): at java.lang.reflect.Method.invoke(Method.java:511)
02-20 03:54:17.192: E/AndroidRuntime(931): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-20 03:54:17.192: E/AndroidRuntime(931): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-20 03:54:17.192: E/AndroidRuntime(931): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
你应该发布你的代码,没有你的代码我们无法找出错误
-
您可能希望确保您尝试插入的所有内容都是有效的(即没有空值)。
-
@mohammedmomn 我已经在 Db 类中创建了数据库,并尝试从上述方法中插入另一个类中的数据,但错误重复我不知道我犯了什么错误....
-
@Somasundaram 检查虚拟值是否插入到您的数据库中,然后您从服务中传递数据
-
@ErstwhileIII 我在插入之前检查了值,但它显示错误.... 02-20 03:54:17.131: I/System.out(931): id-- 1 02-20 03:54:17.131: I/System.out(931): id-- Fruits 02-20 03:54:17.131: I/System.out(931): 内部插入方法 02-20 03:54:17.131: D /AndroidRuntime(931): 关闭 VM 02-20 03:54:17.131: W/dalvikvm(931): threadid=1: 线程退出未捕获异常 (group=0x40a71930) java.lang.NullPointerException
标签: android nullpointerexception android-sqlite sql-insert