رفتن به مطلب

آموزش اضافه - حذف و ویرایش اطلاعات در دیتابیس


مجید آرتا

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

سلام

عالی بود

خیلی ممنون

چطور میشه مطالب انجمن رو به علاقمندی ها اضافه کرد؟

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

سوالتونو رو در یک تاپیک جدا مطرح کنید.

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

  • 6 ماه بعد...

به نام خدا

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

خوب دوست عزیزمون آرمین آموزش تصویری ساختن تیبل رو ارایه کردن و بنده آموزش وصل کردن دیتابیس و اضافه - حذف و ویرایش دیتا رو آموزش میدم

جهت اینکار به کتابخانه SQL نیاز داریم که بنده پیوست می کنم

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

http://answercenter.ir/attachment.php?attachmentid=180&stc=1

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

Num

F_Name

L_Name

City

کنترل های لازم:

3تا Button

3تا EditText

و یه دونه ListView

و در Globals می نویسیم

Sub Globals
    
Dim sql1 As SQL
    
Dim cursor1 As Cursor
    
Private city_txt As EditText
    
Private fname_txt As EditText
    
Private lname_txt As EditText
    
Private lst_db As ListView
    
Dim num_db As String 

End Sub
جهت وصل کردن دیتابیس به شکل زیر عمل می کنیم(نکته:تیبل ساخته شده رو توی پوشه Files حتما کپی کنید)

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("db")
    If File.Exists(File.DirInternal,"data.db")=False Then
    File.Copy(File.DirAssets,"data.db",File.DirInternal,"data.db")
    End If
    If sql1.IsInitialized=False Then
    sql1.Initialize(File.DirInternal,"data.db",False)
    End If
    load_data
End Sub
Sub load_data
lst_db.Clear
cursor1 = sql1.ExecQuery("SELECT * FROM My_DB")
Dim i As Int
For i=0 To cursor1.RowCount-1
cursor1.Position=i
lst_db.AddSingleLine(cursor1.GetString("Num")&  "|" &cursor1.GetString("F_Name")& "|" &cursor1.GetString("L_Name")& "|" &cursor1.GetString("City"))
lst_db.SingleLineLayout.ItemHeight=30
lst_db.SingleLineLayout.Label.TextSize=15
lst_db.SingleLineLayout.Label.TextColor=Colors.Red
lst_db.SingleLineLayout.Label.Color=Colors.Gray
Next
End Sub
تحلیل کدهای Activity_Create و load_data:

Activity_Create:

برای اینکه بتونیم به بانک وصل شیم بانکمون باید توی DirInternal قرار بگیره که طبیعتا اصن نمیدونیم کجاست

پس میاییم شرط می زاریم که بیا ببین personal_info.db توی DirInternal اگه وجود نداره پس بیا از پوشه Files بگیر و کپیش کن توی DirInternal

در شرط بعدی گفتیم گه Initialize یا ساخته نشده پس بیا بسازش (منظورم اینه که کلاسشو بساز)

و گفتیم بیا متد load_data رو فراخوانی کن

load_data:

کد اول میایم لیستو پاک می کنیم چون قصد داریم اطلاعات بهش بدیم

خط دوم اومدیم اطلاعات موجود در دیتابیس رو ریختیم داخل cursor1 و My_DB اسم تیبل بندس

خط چهارم اومدیم اطلاعات دیتابیس رو گرفتیم چون قصد داریم توی لیست ویو نشونشون بدیم

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

یعنی هر ردیف اطلاعات یک شماره اندیس اختصاص می گیره

خط ششم که اومدیم به لیستمون آیتم اضافه کردیم از نوع Single و اومدیم اطلاعات هر ستون رو با GetString گرفتیم و خیلی ساده با یک | از هم جدا کردیم

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

ببینید Num,F_Name,L_Name,City ستون های ما توی دیتابیسمون هستش که اومدیم داده های مربوط به هر ستون رو Get کردیم

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

خط هشتم اومدیم به آیتم ها رنگ دلخواه خودمونو دادیم

خط نهم اومدیم به پشت زمینه آیتم ها رنگ دلخواه دادیم

توی رویداد ItemClick می نویسیم:

Sub lst_db_ItemClick (Position As Int, Value As Object)
    Dim num_value As String
    Dim counter As Int
    num_value=Value
    counter=num_value.IndexOf("|")
    num_value=num_value.SubString2(0,counter)
    num_db=num_value
    cursor1=sql1.ExecQuery("SELECT * FROM My_DB where Num = '" & num_db & "' ")
    For i=0 To cursor1.RowCount-1
    cursor1.Position=i
    fname_txt.Text=cursor1.GetString("F_Name")
    lname_txt.Text=cursor1.GetString("L_Name")
    city_txt.Text=cursor1.GetString("City")
    Next
End Sub
هدف از نوشتن این کدها چیه

اقا ما میخوایم روی هر آیتمی که کلیک شد(هر آیتم شامل اسم،فامیل،نام شهر) رو توی 3تا تکستی که تو برناممونه نشونش بده به صورت جداگانه،که بعد بتونیم اطلاعاتی که ذخیره کردیمو بتونیم حذف یا ویرایش کنیم

کد ها کدهای آسونیه توضیح نمیدم اکه واستون نا مفهوم بود اعلام کنید توضیح میدم

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

Sub add_btn_Click
    If fname_txt.Text="" OR lname_txt.Text="" Then
    Msgbox("لطفا تمامی فیلد ها را پر کنید","خالی بودن فیلد")
    Else
    cursor1=sql1.ExecQuery("SELECT Num FROM My_DB")
    If cursor1.RowCount>0 Then
    For i=0 To cursor1.RowCount-1 
    cursor1.Position=i
    Dim new_num As Int
    new_num=cursor1.GetInt("Num")
    Next
    End If
    new_num=new_num+1
    sql1.ExecNonQuery("INSERT INTO My_DB VALUES('" &new_num&"','" &fname_txt.Text&"','"&lname_txt.Text&"','"&city_txt.Text&"')")
    load_data
    fname_txt.Text=""
    lname_txt.Text=""
    city_txt.Text=""
    fname_txt.RequestFocus
    End If
    
End Sub

3خط اول توضیح نمی خواد

خط چهارم:cursor1 رو برابر می کنیم با ستون Num که همون شماره ردیف ماست

ما میتونستیم یک EditText به Num اختصاص بدیم ولی واسه این که کاربر اذیت نشه و چک نکنه آخرین آیتم شماره ردیفش چنده تا بتونه آیتم بعدی رو وارد کنه ما میاییم این قابلیتو جهت راحتی کاربر و بهینه شدن برناممون انجام می دیم

خط پنجم:اینجا گفتیم اگه ردیف های دیتابیس بزرگتر از 0 بود یعنی اگه اطلاعاتی داریم بیا این کارو انجام بده که خط بعد میگیم چیکا کنه

خط ششم:طبق شرطمون بیا اطلاعات در دیتابیس رو بگیر

خط هفتم:قیلا توضیح دادم

خط هشتم:نیازی به توضیح نیست

خط نهم:اومدیم تعداد ردیف هارو گرفتیم و ریختیم توی متغیر دیگه چون قصد داریم داده اضافه کنیم باید تعداد کل ردیفارو بگیریم و واسه اضافه کردن داده جدید یکی بهش اضافه کنیم

خط دهم و یازدهم:پایان حلقه و پایان شرط

خط دوازدهم:به مقدار ردیف های گرفته شده یکی اضافه می کنیم

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

خط چهاردهم:فراخوانی متد چرا؟چون داده جدید اضافه کردیم با این کار داده جدید در کنار داده اهی قبلی قرار می گیره

خط های بعد نیازی به توضیح نداره

کدهای دکمه حذف:

Sub del_btn_Click
    sql1.ExecNonQuery("DELETE FROM My_DB where Num ='"&num_db&"' ")
    load_data
    fname_txt.Text=""
    lname_txt.Text=""
    city_txt.Text=""
End Sub
خط اول:میاد ردیف انتخاب شده رو حذف می کنه

خط های بعدی توضیح داده شده

کدهای دکمه ویرایش:

Sub edit_btn_Click
    If fname_txt.Text="" OR lname_txt.Text="" Then
    Msgbox("لطفا تمامی فیلد ها را پر کنید","خالی بودن فیلد")
    Else
    sql1.ExecNonQuery("UPDATE My_DB set F_Name='"&fname_txt.Text&"',L_Name='"&lname_txt.Text&"',City='"&city_txt.Text&"' WHERE Num="&num_db)
    load_data
    End If
End Sub
3خط اول نیازی به توضیح نداره

خط چهارم:میاد کوئری Update رو صدا میزنه برای آپدیت یا ویرایش اطلاعات

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

هر مشکلی توی این کدها داشتید یا واستون گنگ بود اعلام کنید ات بیشتر توضیح بدم

رمز فایل:basic4android.org

موفق و موید باشید

 

سلام ممنون از آموزش های کاملتون 

 

من دقیقا دیزاینم رو مطابق کد های شما انجام دادم . 

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

 

 

Untitled.png

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

سلام

دوستم نیازی نبود پست اولو نقل کنید.

اسم تیبل شما آیا My_DB  هستش ؟

این خطا میگه تتیبلی با اسم My_DB  رو نمیتونه پیدا کنه.

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

  • 1 ماه بعد...

سلام

اقای ارتا من بر اساس آموزش شما پیش رفتم

اما دیتابیس اصلی من هیچ تغییری نمیکنه

باید چه کار کنم

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

لطفا تاپیک قدیمی رو بالا نیارید.

سوال خودتون رو دقیق و در تاپیک جداگانه مطرح کنید

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

بایگانی شده

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

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

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