اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

 برای استفاده از تمامی امکانات سایت لطفا در انجمن عضو شوید


mahdilotfi

ارور در ساخت کتاب با b4a و پایگاه داده

8 ارسال در این موضوع قرار دارد

سلام من با استفاده از پایگاه داده خواستم یه کتاب بسازم
تا نوشتن کد کپی پایگاه داده در حافظه گوشی همه چیز خوب کار میکنه :

IF File.Exist(File.DirInternal , "database.db") = False Then

File.Copy(File.DirAssets , "database.db" , File.DirInternal , "database.db")

End IF

اما بعد از مقدار دهی sql با کد :

(sql1.initialize ( file.dirinternal , "database.db" , false

 به محض کامپایل و اجرا تو شبیه ساز پیغام خطا میده و مینویسه 'متسفانه ........ متوقف شده است'
خواهش میکنم کمک کنید

نسخه b4a 7.80

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

درود

خطایی که میده رو بذار تا برسی بشه

If File.Exists(File.DirInternal,"database.db")=False Then
	File.Copy(File.DirAssets,"database.db",File.DirInternal,"database.db")
End If
sql.Initialize(File.DirInternal,"database.db",False)

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

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 10 ساعت قبل، mahdilotfi گفته است :

سلام من با استفاده از پایگاه داده خواستم یه کتاب بسازم
تا نوشتن کد کپی پایگاه داده در حافظه گوشی همه چیز خوب کار میکنه :

IF File.Exist(File.DirInternal , "database.db") = False Then

File.Copy(File.DirAssets , "database.db" , File.DirInternal , "database.db")

End IF

اما بعد از مقدار دهی sql با کد :

(sql1.initialize ( file.dirinternal , "database.db" , false

 به محض کامپایل و اجرا تو شبیه ساز پیغام خطا میده و مینویسه 'متسفانه ........ متوقف شده است'
خواهش میکنم کمک کنید

نسخه b4a 7.80

با این چک کنید ببنید توی direxternal میشه ریخت یا نه
  

 If File.ExternalWritable = True Then

اینم کدایی که من ازشون استفاده میکنم
خود sql رو توی سرویس استارتر تعریف کنید و تو اون ازش استفاده کنید
 

Sub existdb(dbname As String)
	If File.ExternalWritable = True Then
	

		If File.Exists( File.DirRootExternal,"Qdb/"&dbname) Then
			File.Delete( File.DirRootExternal,"Qdb/"&dbname)
			Log("deleted")
	
			File.Copy(File.DirAssets,dbname, File.DirRootExternal,"Qdb/"&dbname)
			ToastMessageShow("copied",False)

		Else
			File.MakeDir(File.DirRootExternal,"Qdb")
			If File.Exists( File.DirRootExternal,"Qdb") Then
			File.Copy(File.DirAssets,dbname, File.DirRootExternal,"Qdb/"&dbname)
			ToastMessageShow("copied",False)
		End If
		
		End If
	Else
	
		If File.Exists( File.DirInternal,"Qdb/"&dbname) Then
			File.Delete( File.DirInternal,"Qdb/"&dbname)
			Log("deleted")
	
			File.Copy(File.DirAssets,dbname, File.DirInternal,"Qdb/"&dbname)
			ToastMessageShow("copied",False)

		Else
			File.MakeDir(File.DirInternal,"Qdb")
			If File.Exists( File.DirInternal,"Qdb/"&dbname) Then
			File.Copy(File.DirAssets,dbname, File.DirInternal,"Qdb/"&dbname)
			ToastMessageShow("copied",False)
		
		End If
		End If
	End If
	

End Sub

Sub initdb(dbname As String)
	Log("ANSWER"&File.Exists( File.DirRootExternal,"Qdb/"&dbname))
	If File.Exists( File.DirRootExternal,"Qdb/"&dbname) = True Then
		starter.sql.Initialize( File.DirRootExternal,"Qdb/"&dbname,False)
		Log("init:"&starter.sql.IsInitialized)
	End If

	
End Sub

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

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام کل کد ها :

Sub Process_Globals
    Dim sql1 As SQL
    

End Sub


Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layout1")
    If File.Exists(File.DirInternal , "database.db") = False Then
        File.Copy(File.DirAssets , "database.db" , File.DirInternal , "database.db")
    

        sql1.Initialize(File.DirInternal , "database.db" , False)

End Sub

و پیغام های خطای بعد از کامپایل :

*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
main_activity_create (java line: 344)
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
    at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
    at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
    at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
    at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:792)
    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:669)
    at anywheresoftware.b4a.sql.SQL.Initialize(SQL.java:44)
    at b4a.example.main._activity_create(main.java:344)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:186)
    at b4a.example.main.afterFirstLayout(main.java:102)
    at b4a.example.main.access$000(main.java:17)
    at b4a.example.main$WaitForLayout.run(main.java:80)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5019)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    at dalvik.system.NativeStart.main(Native Method)
 

خواهش میکنم کمک کنید

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 6 دقیقه قبل، mahdilotfi گفته است :

سلام کل کد ها :

Sub Process_Globals
    Dim sql1 As SQL
    

End Sub


Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layout1")
    If File.Exists(File.DirInternal , "database.db") = False Then
        File.Copy(File.DirAssets , "database.db" , File.DirInternal , "database.db")
    

        sql1.Initialize(File.DirInternal , "database.db" , False)

End Sub

و پیغام های خطای بعد از کامپایل :

*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
main_activity_create (java line: 344)
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
    at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
    at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
    at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804)
    at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:792)
    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:669)
    at anywheresoftware.b4a.sql.SQL.Initialize(SQL.java:44)
    at b4a.example.main._activity_create(main.java:344)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:186)
    at b4a.example.main.afterFirstLayout(main.java:102)
    at b4a.example.main.access$000(main.java:17)
    at b4a.example.main$WaitForLayout.run(main.java:80)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5019)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    at dalvik.system.NativeStart.main(Native Method)
 

خواهش میکنم کمک کنید

اگه با نویکت دیتابیستو ساختی sql3 رو امتحان کن
منم یه همچین مشکلی داشتم گذاشتم رو sql3 برطرف شد
 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اس کیو ال 3 رو هم امتحان کردم اینیشالیز با موفقیت انجام میشه اما بعد از مقدار دهی متغیر cursor دوباره با همون مشکل مواجه میشم

کل کدها :

Sub Process_Globals
    Dim sql1 As SQL
    

End Sub


Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layout1")
    If File.Exists(File.DirInternal , "database.db") = False Then
        File.Copy(File.DirAssets , "database.db" , File.DirInternal , "database.db")
    

        sql1.Initialize(File.DirInternal , "database.db" , False)

    Dim cur As Cursor
    
    cur = sql1.ExecQuery("SELECT * FROM table")

End Sub

کد های خطا :

*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
main_activity_create (java line: 348)
android.database.sqlite.SQLiteException: no such table: book2 (code 1): , while compiling: SELECT * FROM book2
    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
    at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
    at anywheresoftware.b4a.sql.SQL.ExecQuery2(SQL.java:223)
    at anywheresoftware.b4a.sql.SQL.ExecQuery(SQL.java:211)
    at b4a.example.main._activity_create(main.java:348)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:186)
    at b4a.example.main.afterFirstLayout(main.java:102)
    at b4a.example.main.access$000(main.java:17)
    at b4a.example.main$WaitForLayout.run(main.java:80)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5019)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    at dalvik.system.NativeStart.main(Native Method)
 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

میگه تیبلی به اسم book2 پیدا نمیکنه
دیتابیستون رو چک کنید ببینید تیبلی به اسم دارید اصلا یا نه دقت کنید اسم تیبل رو باید بدید نه connection  یا ستون
و همونطور که گفتم توی استارتر سرویس تعریف کنید sql رو و از اونجا فراخوانی کنیدش
strater.sql1

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری