پویا نظری

مشکل INSERT کردن در SQLite (اندروید استودیو 3.0.1)

پویا نظری ۱۳۹۸/۰۱/۲۲ برنامه‌نویسی اندروید

سلام

مشکل هنگام استفاده از دستور ()db2.insert به وجود میاد.

 SQLiteDatabase db2 = this.getWritableDatabase();
 ContentValues value = new ContentValues();
 value.put("fName","Sina");
 value.put("lName","Ahmadi");
 db2.insert("tb-test",null,value);

خطای زمان اجرا

Error inserting fName=Sina lName=Ahmadi
android.database.sqlite.SQLiteException: near "-": syntax error (code 1): , while compiling: INSERT INTO tb-test(fName,lName) VALUES (?,?)

ظاهرا خطا از خالی بودن fNameوlName خبر میده.

نکته: چنین مشکلی هنگام استفاده از دستور ()execSQL پیش نمیاد.

پاسخ‌ها به این تاپیک
sajjad5989
sajjad5989
۱۳۹۸/۰۱/۲۳

سلام

برای این که بخوای تو دیتابیس درج کنی باید دیتابیس open باشه و پس از درج هم باید close بشه:

public class SqliteInsertClass {
	SQLiteOpenHelper dbHelper;
	SQLiteDatabase database;
	
	public SqliteInsertClass(Context context) {
		dbHelper = new DatabaseAdapter(context);
	}
	
	public void insertRecord(Alarm alarm){ 
		open();
		
		ContentValues values = new ContentValues();
		value.put("fName","Sina");
		value.put("lName","Ahmadi");
		database.insert("tb-test",null,value);
		
		close();
	}
	
	public void open() {
		database = dbHelper.getWritableDatabase();
		Log.i(LOG_TAG, "Database Opened");
	}
	
	public void close() {
		Log.i(LOG_TAG, "Database Closed");
		dbHelper.close();
	}
}

من این کار رو انجام دادم درست شد و جواب هم گرفتم

پیشنهاد من اینه که برای کار با دیتابیس ها توی اندروید از ROOM استفاده کنید - یه ORM بسیار قدرتمند هست

ان شا الله بشه

پویا نظری
پویا نظریدانشجوی نرم‌افزار
۱۳۹۸/۰۱/۲۳

ممنون از زمانی که گذاشتید اما DatabaseAdapter خطا میگیره و بعدش هم از dbHelper خطای Null Object میده.

شاید مشکل از نسخه اندروید استودیو باشه، مطمعا نیستم دقیقا مشکل چیه، وقتی دستی Query افزودن رو می‌نویسی بدون مشکل اجرا می‌کنه.

در پاسخ به

sajjad5989
sajjad5989
۱۳۹۸/۰۱/۲۳

شما باید کلاس DatabaseAdapter خودت رو داشته باشی

این جا رو بخونی مشکلت حل میشه

https://stackoverflow.com/questions/15384550/android-sqlite-contentvalues-not-inserting

ارتباطی هم به نسخه اندروید استدیو نداره

در پاسخ به