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

خطای کد من کجاست؟؟؟

kazemian  9 سال پیش  9 سال پیش
0 0

سلام دوستان
میخواستم بدونم خطای کد من کجاست که برنامم کرش میکنه
ظاهرا همه چی رو درست نوشتم 

 package com.example.database;

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

public class dbopenhelper extends SQLiteOpenHelper {

	public static final String dbname = "database";
	public static final String tblname = "tbluser";

	public static final String cid = "id";
	public static final String cname = "name";
	public static final String cuser = "user";
	public static final String cpass = "password";

	public static final String createtbl = "CREATE TABLE" + tblname + "(" + cid
			+ "INTEGER PRIMARYKEY AUTOINCREMENT," + cname + "TEXT," + cuser
			+ "TEXT," + cpass + "TEXT);";

	public dbopenhelper(Context context) {
		super(context, dbname, null, 1);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {

		db.execSQL(createtbl);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
		db.execSQL("DROP TABLE IF EXIST"+tblname);
		onCreate(db);
	}

}

 

 

 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
Amir  9 سال پیش
+1 0

شما برای ساخت table بعضی از دستورات رو به هم چسبوندید چند تا کاراکتر اضافه گذاشتید و بعضی از دستورات رو جا گذاشتید. کد زیر رو به جای کدتون کپی کنید:

public static final String createtbl = "CREATE TABLE IF NOT EXISTS " + tblname + " (" + cid
+ " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, " + cname + " TEXT, " + cuser
+ " TEXT, " + cpass + " TEXT)";

برای حذف table هم کدها رو سرهم نوشتید و به جای EXISTS نوشتید EXIST که باید به جاش کد زیر رو بنویسید:

db.execSQL("DROP TABLE IF EXISTS "+tblname);
0 0
ممنون از شما طبق راهنمایی شما پیش رفتم درست شد همون EXIST رو که درست کردم کار کرد فقط ببخشید این تیکه کدی که نوشتین چیکار میکنه: NOT NULL UNIQUE بازم ممنون (9 سال پیش)
+1 0
not null یعنی اینکه نمیتونه خالی باشه, unique هم نمیدونم چیه ولی برای فیلد id همه میزارنش. (9 سال پیش)
+1 0
Unique یعنی یکتا. البته جای درستی استفاده نکرده دوستمون. زمانی که شما id رو کلی اصلی قرار میدید (perimary key) اون کلید دیگ در کل جدول یکتا هست و دیگ نیازی به قید کردن unique نیست. (9 سال پیش)
0 0
متاسفانه اپ من با این کدها هنوز هم کرش میکنه راهنمایی هایی که دوستان کردن هم انجام دادم اما بازم فایده ای نداره ریز به ریزش رو بررسی کردم اما بازم ارور میده (9 سال پیش)
0 0
کدهات و خطایی که میده رو بذار (9 سال پیش)
پاسخ به سوال 
kazemian  9 سال پیش
0 0

پیام های log cat :

لینک

0 0
ببخشید انقد طولانی شد نمیدونستم دقیقا کدوم خطش رو باید بنویسم: اینم کدهای اون یکی کلاسم package com.mohammad.dbtest.app.course.torobche; import android.app.Activity; import android.os.Bundle; public class Main extends Activity { private dbopenhelper dbm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); dbm = new dbopenhelper(this); dbm.getWritableDatabase(); } } (9 سال پیش)
0 0
کدهاتون رو توی تگ کد بنویسید این که هیچ چیش معلوم نیست (9 سال پیش)
0 0
کدها رو که برداشتید! کدهاتون و خطای Log Cat رو همینجا بزارید البته توی تگ کد. (9 سال پیش)
0 0
اهاا ببخشید (9 سال پیش)
پاسخ به سوال 
kazemian  9 سال پیش
0 0

کدهای اصلی همونان که بالا گذاشتم
پیام log cat هم که گذاشتم

این کد ها هم توی یه کلاس دیگه برای فراخوانی نوشتم همین :

 package com.mohammad.dbtest.app.course.torobche;

import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity {

	private dbopenhelper dbm;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		dbm = new dbopenhelper(this);
		dbm.getWritableDatabase();

	}

}

 

 

+1 0
من که اولم گفتم شما همه ی دستورات رو سرهم نوشتی و تصحیحم کردم و کدشو بالا نوشتم. کدهایی که گفتم رو جایگزین کنید درست میشه. (9 سال پیش)
0 0
کد شمارو جایگزین میکنم درست کار میکنه اما دقیقا نمیدونم خطای کد خودم کجاست کد شما رو جایگزین کردم جاهایی که بهش اضافه کردین رو هم پاک کردم اما بازم درست کار کرد!!! (9 سال پیش)
+1 0
خطای کدتون دقیقا پیش اسم جدول هست. اسم جدول رو چسبوندی به کلمه TABLE (9 سال پیش)
+1 0
بقیه کلماتم که به هم چسبوندی. یکم با دقت تر کد بنویس همشون به هم چسبیدن (9 سال پیش)
0 0
عذر میخوام اما من هنوز هم متوجه اشتباهم نشدم خیلی گیج میزنم (9 سال پیش)
0 0
به جز سرهم نوشتن دستورات یه سمی کالن هم بعد از دستورات sqlite گذاشتید که من توی کدی که گذاشتم اون رو پاک کردم. احتمالا شما اونو پاک نکردید که کرش می کنه. (9 سال پیش)
0 0
نه اون سمی کالن نیازه دو تا نیاز داره یکی برا String یکی هم برا اون دستور البته من هنوز هم در اوج گیجی نمیدونم کجا ها رو میگین سر هم نوشتم :((( (9 سال پیش)
پاسخ به سوال 
Amir  9 سال پیش
+1 0

کد شما به این شکله:

"CREATE TABLEtbluser(idINTEGER, ...)"

که باید اینجوری باشه:

"CREATE TABLE tbluser (id INTEGER, ...)"
0 0
بالاخره فهمیدم چی به چیه :) خدا خیرت بده (9 سال پیش)
پاسخ به سوال 
QUQU  9 سال پیش
+1 0

ببینین مثلا این کدی که شما نوشتین (حالت غلط ) نتیجه شماره ۱ رو میده که اشتباه هست و به جاش باید حالت (درست) رو بنویسین که نتیجه درست میده :

 
Halate Ghalat : 


public
static final String createtbl ="CREATE TABLE"+ tblname

Natije 1 (natije ghalat) :
CREATE TABLEtblname

Halate Dorost :

public static final String createtbl ="CREATE TABLE "+ tblname

Natije 2 (natije dorost) :
CREATE TABLE tblname

در حقیقت اشتباه شما اینه که بعد از CREATE TABLE و خیلی جاهای دیگه Space  (فاصله نزاشتی . ) و باید بزاری تا کد درست در بیاد . کد اول رو SQL متوجه نمیشه چون TABLEtblname رو یه کلمه میبینه و این کلمه واسش تعریف نشده ولی کد دوم رو میتونه تشخیص بده چون به این صورت درکش میکنه و به عنوان ۳ تا کلمه جدا از هم میبینتش :

CREATE TABLE tblname


+1 0
اووووووووف بالاخره فهمیدم :)) (9 سال پیش)

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