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

گرفتن یکباره اطلاعات Sqlite


اندرویدستان

سوال

سلام

چطوری میتونم به یکباره اطلاعات داخل دیتابیس رو بگیرم یعنی از For Next استفاده نکنم مثل زیر نباشه

        Cur = SQL1.ExecQuery("SELECT `you_id` FROM `ChatDb`")
  ""=Query
        For i = 0 To Cur.RowCount-1
Cur.Position = i

  Query=Query & Cur.GetString("you_id")
        Next
 

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

Query=SQL1.ExecQuery("SELECT `you_id` FROM `ChatDb`")

ممنون

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

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

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

شدنی نیست به نظرم. و اصلا هم توصیه نمیشه. خروجی کوئری های sql یه curser هست برای خوندنش باید رو آیتماش پیمایش بشه.

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

در ۱۴۰۰/۶/۱۰ در ۰۷:۳۳، محمدرضا شاهپیری گفته است:

شدنی نیست به نظرم. و اصلا هم توصیه نمیشه. خروجی کوئری های sql یه curser هست برای خوندنش باید رو آیتماش پیمایش بشه.

آخه حجم دیتابیس داخل موبایل بالا که میره سرعت خواندن پایین میاد

راهی نیست سریعتر بخونه؟

مثلا 100.000 رکورد رو در یک ثانیه

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

در ۱۴۰۰/۶/۱۰ در 15:09، farsroom گفته است:

آخه حجم دیتابیس داخل موبایل بالا که میره سرعت خواندن پایین میاد

راهی نیست سریعتر بخونه؟

مثلا 100.000 رکورد رو در یک ثانیه

اگه میخواید جستحو کنید فیلد هایی ک میخواید داخلش جستجو انجام بدید رو باید ایندکس کنید (به ترتیب مرتب میکنه تا سریع بتونه پیدا کنه هر چیزی رو)

و سپس از دستور where استفاده کنید

در کمتر از چند میلی ثانیه میتونه بین 100000 رکورد یا حتی خیلی بیشتر رکورد های مورد نیاز شمارو پیدا کنه

 

اگه به هر دلیل میخواید کل اطلاعات رو بگیرید داخل php همچین دستوری دیدم (یک ارایه برای مثال برمیگردونه). داخل b4a فکر کنم همچین دستوری نداره

ولبی با حلقه یا بدون حلقه فرقی هم نمیکنه و تا جایی ک یادم هست در php هم فرقی نداشت از نظر سرعت و ..

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

از همین کد و حلقه استفاده کنید. تفاوتی در کارایی و سرعت نداره. اگه قراره رکورد هارو به عنوان یک متن بچسبونید به هم از StringBuilder استفاده کنید.

 

اگه کند انجام میشه ساختار یا الگوریتم برنامه نویسی/برنامه و دیتابیستون مشکل داره و باید تغییرش بدید. 100000 یا 1 میلیون رکورد برای دیتابیس مقدار زیادی نیست هر چقدر هم که اطلاعات بعضی فیلد ها بزرگ باشه (مثلا متن بزرگ و طولانی یا blob...) ولی طبیعتا نباید اطلاعات تمام این فیلد هارو یکجا بگیرید یا داخل فیلد هایی با متن طولانی نمیتونید جستجوی سریع انجام بدید.

 

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

 

Dim SenderFilter As Object = sql.ExecQueryAsync("SQL", "SELECT * FROM table1", Null)
Wait For (SenderFilter) SQL_QueryComplete (Success As Boolean, rs As ResultSet)
If Success Then
  Do While rs.NextRow
    Log(rs.GetInt2(0))
  Loop
  rs.Close
Else
  Log(LastException)
End If

https://www.b4x.com/android/help/sql.html#sql_execqueryasync

 

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

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

بایگانی شده

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

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

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