رفتن به مطلب
  • 0

مشکل با سرعت پایین لود دیتابیس آفلاین


discoversh

سوال

با سلام خدمت اساتید.من توی کار بادیتابیس یه مشکل جزیی دارم و اونم اینه که وقتی از روی دیتابیس لیست ویو رو باز میکنم تا مطالب رو انتخاب کنم؛تاموقعی که کل دیتابیس لود نشه.نمیتونم مطالب لیست ویو رو انتخاب کنم.برای یه یست ویو 180 گزینه ای چار تا پنچ ثانیه طول میکشه.لطفا راهنماییم کنین.؟سپاس 

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

4 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام.

من تاحالا استفاده بخصوصی از دیتابیس نکردم ولی فکر کنم چون تعداد آیتم هاتون زیاد هست باید از لیمیت استفاده کنید و مطالب رو لیمیت شده فراخوانی کنید از دیتابیس.

حالا باز سرچ کنید شاید به نتیجه رسیدید. :fekr:

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

سلام

لیمیت دیتابیس توی لیست ویو ، اذیتتون میکنه چون نمیتونید برید و دیتاهای بعدی رو بخونید

این از این

تعجب میکنم

من الان 160 تا حدودا دیتا همینطوری زدم که اورد بی هیچ مشکلی در کمتر از 1 قثانیه

میتونید مثلا اگه میخواین فقط از دو ستون name fname استفاده کنید، فقط همینارو بخونید توی کورسور

SELECT (name,fname) FROM tbl

یه نمونه هم براتون زدم که با async کار میکنه و وقتی کوئری انجام شد و موفقیت امیز بود، میتونید کاری انجام بدید

من اومدم و قبل از دادن کوئری یه Progress dialog نشون دادم و بعد از انجام هم برش داشتم

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

سورس با دیتابیس خدمت شما

 

سورس         answercenter.ir

 

اینم کدها اگه نخواستین دانلود کنید

Sub Globals
	'These global variables will be redeclared each time the activity is created.
	'These variables can only be accessed from this module.
Dim l As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)

Dim sql1 As SQL
File.Copy(File.DirAssets,"test.db",File.DirInternal,"test.db")
sql1.Initialize(File.DirInternal,"test.db",True)


l.Initialize("")
Activity.AddView(l,0,0,100%x,100%y)
ProgressDialogShow("LoadingData")

sql1.ExecQueryAsync("sql1","SELECT * FROM tbl",Null)

End Sub




Sub sql1_QueryComplete (Success As Boolean, Crsr As Cursor)
	If Success = True Then
		For i = 0 To Crsr.RowCount - 1
			Crsr.Position = i
			l.AddSingleLine(Crsr.GetString("titr"))
		Next
		ProgressDialogHide
	End If
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

سلام

لیمیت دیتابیس توی لیست ویو ، اذیتتون میکنه چون نمیتونید برید و دیتاهای بعدی رو بخونید

این از این

تعجب میکنم

من الان 160 تا حدودا دیتا همینطوری زدم که اورد بی هیچ مشکلی در کمتر از 1 قثانیه

میتونید مثلا اگه میخواین فقط از دو ستون name fname استفاده کنید، فقط همینارو بخونید توی کورسور

SELECT (name,fname) FROM tbl

یه نمونه هم براتون زدم که با async کار میکنه و وقتی کوئری انجام شد و موفقیت امیز بود، میتونید کاری انجام بدید

من اومدم و قبل از دادن کوئری یه Progress dialog نشون دادم و بعد از انجام هم برش داشتم

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

سورس با دیتابیس خدمت شما

 

سورس         answercenter.ir

 

اینم کدها اگه نخواستین دانلود کنید

Sub Globals
	'These global variables will be redeclared each time the activity is created.
	'These variables can only be accessed from this module.
Dim l As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)

Dim sql1 As SQL
File.Copy(File.DirAssets,"test.db",File.DirInternal,"test.db")
sql1.Initialize(File.DirInternal,"test.db",True)


l.Initialize("")
Activity.AddView(l,0,0,100%x,100%y)
ProgressDialogShow("LoadingData")

sql1.ExecQueryAsync("sql1","SELECT * FROM tbl",Null)

End Sub




Sub sql1_QueryComplete (Success As Boolean, Crsr As Cursor)
	If Success = True Then
		For i = 0 To Crsr.RowCount - 1
			Crsr.Position = i
			l.AddSingleLine(Crsr.GetString("titr"))
		Next
		ProgressDialogHide
	End If
End Sub

سپاس از سورس و راهنمایتون.با این وجود اینکه یه چند ثانیه وقت کاربر صرف نشون دادن پروسس بشه,یکم آزار دهنده بنظر میاد.من اومدم کد Activity.Finish رو هم از روی دکمه برگشت رو هم برداشتم.برای اینکه تا موقعی که برنامه اجراست فقط یک دفه این اتفاق بیفته ولی متوجه شدم بعد از اینکار فقط اون لیست ویویی باز میشه که برای باره اول باز کرده بودم.؟

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

سپاس از سورس و راهنمایتون.با این وجود اینکه یه چند ثانیه وقت کاربر صرف نشون دادن پروسس بشه,یکم آزار دهنده بنظر میاد.من اومدم کد Activity.Finish رو هم از روی دکمه برگشت رو هم برداشتم.برای اینکه تا موقعی که برنامه اجراست فقط یک دفه این اتفاق بیفته ولی متوجه شدم بعد از اینکار فقط اون لیست ویویی باز میشه که برای باره اول باز کرده بودم.؟

خواهش میکنم

دقیقا متوجه نشدم چه کار کردید

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

اگه درست متوجه شده باشم

با کد زیر کار کنید

اگه لیست ویو اولین ویو ای هست که اضافه کردید، عدد 0 رو بذارید، اگه دومین ویو ای هست که اضافه کردید(مثلا قبلش یه لیبل هم گذاشتید) عدد 1 رو بذارید و ...

Activity.RemoveViewAt(0)
لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...