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

ثبت و ویرایش اطلاعات پایگاه داده با استفاده از EditText


aririkateki

سوال

با سلام خدمت دوستان عزیز

 

من تازه کار هستم و میخواهم در برنامه اطلاعات کاربر را از طریق EditText بگیرم و آنرا در DB ذخیره کنم

در انجمن چیزی پیدا نکردم

عذر خواهی میکنم اگر سوالم تکراری است

 

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

	Dim sql1 As SQL
	Dim name , ax As String
	Dim code As Int



Try
If File.Exists(File.DirInternal,"testsql.db")=False Then
	File.Copy(File.DirAssets,"testsql.db",File.DirInternal,"testsql.db")
End If
 code = EditText1.Text
 name = EditText2.Text
 ax = EditText3.Text
 sql1.Initialize(File.DirInternal, "testsql.db" , False)
 sql1.BeginTransaction
 sql1.ExecNonQuery("Insert into tbl_list (code,name,ax) values (" + code + "," + name + "," + ax + ")")
 sql1.TransactionSuccessful
 sql1.EndTransaction
 Catch
   Msgbox(LastException.Message,"warning")
 End Try

ولی مشکل داره و نمیدونم مشکلش چیه!!!

اگه لطف کنید راهنمایی کنید ممنون میشم

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

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

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

من خواهرم!! :D

بله ارور داره ولی هر جا را تغییر میدم یه ارور دیگه میده :zoor:

میشه برنامه و پایگاه داده را ایمیل کنم براتون زحمت بکشید یه نگاهی بهش بندازید؟

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

خواهرم، زحمت بکشید ارور هاتون رو بذارید

ببینیم چیه

هم من، هم بقیه دوستان کمکتون میکنیم...

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

سلام برادرم

تایپک رو جای اشتباهی زدید عزیزم، دقت کنید :gol:

به شکل کلی، اینطوریه...

sql1.ExecNonQuery2("INSERT INTO table1 VALUES(?,?,?,?)",Array As Object(Edittext1,edittext2,edittext3,edittext4))

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

من قبلا جواب میگرفتم از این راه...

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

سلام
من هم توی ویرایش اطلاعات دیتابیس مشکل دارم
دیتای من  سه ستون داره   id  sual javab
توی اکتویتی اصلی برنامه محتویات دیتا نشون داده میشه
بعد پایین همین اکتویتی اصلی دکمه گذاشتم برای ویرایش
توی اکتویتی  ویرایش(همه جوابها فقط قابلیت ویرایش و بعد ذخیره  میشن)بخاطر همین  توی اکتویتی ویرایش یه ادیت تکست گذاشتم تا داده های برنامه توی ادیت تکست نشون دادن بشه   و همونجا کابر بتونه با توجه به نوع سوال تغییرات را انجام بده

پایین اکتویتی ویرایش هم دکمه گذاشتم و کد ویرایش و آپدیت sql را توی رویداد این دکمه گذاشتم 
ولی یه مشکلی هست  که فقط id آخر تغییرش ذخیره میشه و در اکتویتی اصلی نشون داده  میشه که بله تغییر کرده  و بقیه idها علیرغم تغییر و ذخیره  ،

این هم  فقط id اخر تغییرش ذخیره میشه با لاگ گرفتن متوجه شدم

نام اکتویتی اصلی:activi    و اکتویتی ویرایش  act edit  هست
این هم کدها بخش اکتویتی اصلی:

Sub Process_Globals
	Dim sql1 As SQL
	Dim cur As Cursor
	'End Sub

Sub Globals
	Private ScrollView1 As ScrollView
	Private Label1 As Label
	Dim su As StringUtils
	Dim hight As Int
	Dim scrolhight As Int=1%y
	Private Label2 As Label
	Private Buttonedit As Button
	Private Buttonnew As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("scrol")
	If File.Exists(File.DirInternal,"rep.db")=False Then
	File.Copy(File.DirAssets,"rep.db",File.DirInternal,"rep.db")
	End If
	sql1.Initialize(File.DirInternal,"rep.db",False)
	load
End Sub
Sub load
	ScrollView1.Panel.RemoveAllViews
	cur=sql1.ExecQuery("SELECT * FROM car3")
       
	For i=0 To cur.RowCount-1
		cur.Position=i
		Dim p As Panel
		p.Initialize("")

		ScrollView1.Panel.AddView(p,0,scrolhight,100%x,50dip)
		p.LoadLayout("panel")
		
		Label1.Text=cur.GetString("sual")
		hight=su.MeasureMultilineTextHeight(Label1,cur.GetString("sual"))+7%y
		Label1.Color=Colors.Cyan
		Label2.Text=cur.GetString("javab")
		Label2.Color=Colors.Cyan
		p.Height=hight+10dip
		Label1.Gravity=Gravity.CENTER
		Label2.Gravity=Gravity.CENTER
		scrolhight=scrolhight+hight+4%y
		ScrollView1.Panel.Height=scrolhight
		
				
	Next
	
End Sub

این هم کدهای بخش ویرایش :

Sub Globals
	Dim hight As Int
	Dim scrolhight As Int=1%y
	Private ScrollView1 As ScrollView
	Private Panel1 As Panel
	Private Label1 As Label
	Private EditText1 As EditText
	Dim su As StringUtils
	Private Buttonsave As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)
	'Do not forget to load the layout file created with the visual designer. For example:
	Activity.LoadLayout("main2")
	For i=0 To activi.cur.RowCount-1
	activi.cur.Position=i
	Dim p As Panel
	p.Initialize("")
	ScrollView1.Panel.AddView(p,0,scrolhight,100%x,50dip)
'	  scrolhight=scrolhight+10%y
		p.LoadLayout("panel2")
		Label1.Text=activi.cur.GetString("sual")
		hight=su.MeasureMultilineTextHeight(Label1,activi.cur.GetString("sual"))+7%y
		Label1.Color=Colors.Black
		EditText1.TextColor=Colors.Blue
		EditText1.Text=activi.cur.GetString("javab")
		EditText1.Color=Colors.LightGray
		p.Height=hight+10dip
		Label1.Gravity=Gravity.CENTER
		EditText1.Gravity=Gravity.CENTER
		scrolhight=scrolhight+hight+4%y
		ScrollView1.Panel.Height=scrolhight
'		
	Next
End Sub

Sub Buttonsave_Click
	activi.sql1.ExecNonQuery2("UPDATE car3 SET javab=? WHERE id=?",Array(EditText1.Text,activi.cur.GetString("id")))
	
		Log(activi.cur.GetString("id"))
	ToastMessageShow("اطلاعات جدید ذخیره شد",False)
	
    Activity.Finish
End Sub

 

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

سلام برادرم

تایپک رو جای اشتباهی زدید عزیزم، دقت کنید :gol:

به شکل کلی، اینطوریه...

sql1.ExecNonQuery2("INSERT INTO table1 VALUES(?,?,?,?)",Array As Object(Edittext1,edittext2,edittext3,edittext4))

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

من قبلا جواب میگرفتم از این راه...

 

عذر میخوام بابت اشتباهم

و ممنون از راهنماییتون

ولی نمیدونم چرا من هیچجوری جواب نمیگیرم!! :((

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

خوب برادرم

اروری دارید؟

اطلاعات وارد نمیشه

از کجا فهمیدید که جواب نمیگیرید؟

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

الان کدم به شکل زیر است و ارور android.database.sqlite.sqliteconstraintexception error code 19 constraint failed را میدهد

Try
	If File.Exists(File.dirInternal,"testsql.db")=False Then
		File.Copy(File.DirAssets,"testsql.db",File.dirInternal,"testsql.db")
	End If
	sql1.Initialize(File.dirInternal,"testsql.db",False)
	sql1.BeginTransaction
	sql1.ExecNonQuery2("INSERT INTO tbl_list (Code,name,ax) VALUES(?,?,?)",Array As Object(EditText1,EditText2,EditText3))
	sql1.TransactionSuccessful
	sql1.EndTransaction
Catch
   Msgbox(LastException.Message,"warning")
End Try

لازم به ذکر است در پایگاه داده

code از نوع integer و کلید است و توسط کاربر پر میشود و فیلدهای name و ax از نوع text میباشند

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

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

 

1.تکراری بودن داده autonumber

2.ورودی نا صحیح (این تجربی بود)

 

ساختار دیتا بیس رو شرح بدید الیته من هنوز کد های شما رو بررسی نکردم

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

این احتمالا مشکل شما رو حل میکنه

 

دانلود

 

رمز : basic4android.org

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

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

 

1.تکراری بودن داده autonumber

2.ورودی نا صحیح (این تجربی بود)

 

ساختار دیتا بیس رو شرح بدید الیته من هنوز کد های شما رو بررسی نکردم

 

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

 

کلید من autonumber نیست و اطلاعاتی که وارد میکنم هم برای اولین بار وارد میکنم پس تکراری نیستن

 

فقط الان یه سوال برای من بوجود اومد!! اونم اینه که زمانی که از برنامه شما استفاده کردم ظاهرن همه چیز خوب بود و جواب داد ولی باز هم جدول را با Navicate sqlite که باز میکنم خالیه!! آیا همانجا نباید اطلاعات را ببینم؟

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

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

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

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

عذر خواهی میکنم ولی کجا میتونم داده های ذخیره شده در جدولم را ببینم؟

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

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

 

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

 

یا مثل بنده اطلاعات خودتون رو یا log بگیرید یا در لست یا یه فایل تکست ذخیره کنید

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

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

 

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

 

یا مثل بنده اطلاعات خودتون رو یا log بگیرید یا در لست یا یه فایل تکست ذخیره کنید

آهان

 

بسیار بسیار بسیار سپاسگذارم

 

واقعن کمک بزرگی کردید

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

بایگانی شده

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

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
  • کاربران آنلاین در این صفحه   0 کاربر

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