آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

خطای NullPointerException در دستور insert (حل شد)

hhgh4269  10 سال پیش  10 سال پیش
0 0

برنامه زیر تو خط مربوط به دستور insert خطای NullPointerException میدهد لطفا راهنمایی کنید

فایل xml برنامه

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.hamidi.firetdb2.MainActivity" >

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Insert" />

</RelativeLayout>

 package com.hamidi.firetdb2;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class MainActivity extends Activity {
	
	private Dbhandler data;
	private Button insert;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		data=new Dbhandler(this);
		
		
		insert=(Button) findViewById(R.id.btn1);
		
		
		insert.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				data.open();
				data.insertinto("hassan","abc","hhgh");
				data.close();
				
			}
		});
		
		
		
	}


}

بالایی فایل اکتیویتی اصلی برنامه است

این یکی فایل کلاس ایجاد دیتا بیس است Makedatabase

 

 package com.hamidi.firetdb2;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Makedatabase extends SQLiteOpenHelper{
	
	public static final String dbname="dbname";
	public static final String tblname="tblname";

	public static final String id="id";
	public static final String username="username";
	public static final String password="pasword";
	public static final String name="name";
	
	public static final String query="CREATE TABLE "+tblname+"( "+id+" INTEGER PRIMARY KEY AUTOINCREMENT, "+username+" TEXT , "+password+" TEXT , "+name+" TEXT );";
	
	public Makedatabase(Context context) {
		super(context, dbname, null, 1);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		db.execSQL(query);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
		// TODO Auto-generated method stub
		db.execSQL("DROP TABLE IF EXIST "+tblname);
		onCreate(db);
		
	}

}

اینحا هم فایل کار روی دیتا بیس است Dbhandler که در دستور insert خطا میدهد

 

 

 package com.hamidi.firetdb2;

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

public class Dbhandler {
	
	private Makedatabase mydb;
	private SQLiteDatabase database;
	
	
	public Dbhandler(Context context){
		mydb=new Makedatabase(context);
	}
	
	public void open(){
		mydb.getWritableDatabase();
	}
	
	public void close(){
		mydb.close();
	}
	

	public String display(int row,int col){
		Cursor cu=database.query(Makedatabase.tblname, null, null, null, null, null, null);
		cu.moveToPosition(row);
		String name=cu.getString(col);
		cu.close();
		return name;
	}
	
	
	
	
	public void insertinto(String name,String username,String password){
		ContentValues content=new ContentValues();
		content.put(Makedatabase.name, name);
		content.put(Makedatabase.username, username);
		content.put(Makedatabase.password, password);
	
		database.insert(Makedatabase.tblname,null,content);
		
	}
	
}

 

 

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
hhgh4269  10 سال پیش
+1 0

مشکلم را پیدا کردم در واقع  ریشه مشکل در متد open  هست که انجا یادم رفته بود شی database  را ست کنم  شیوه صحیح به صورت زیر است 

 public void open(){
		//mydb.getWritableDatabase(); error
		database=mydb.getWritableDatabase(); // ok
	}

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .