رفتن به مطلب

اپدیت دیتابیس افلاین(از طریق بانک انلاین)


shahab.es

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

به نام خدا

سلام و عرض ادب خدمت همه دوستان
اموزش کامل اپدیت دیتابیس افلاین رو ظبط کردم و قرار دادم براتون :)
توضیح خاصی نداره
یه بانک توی هاستتون باید داشته باشید
طبق اموزش برید جلو
اطلاعات بانک انلاینتون میاد توی بانک افلاین :gol:
امیدوارم کمکتون کنه

 

-------------------------------

بخش دوم اموزش-ویرایش اطلاعات بعد از بروزرسانی

 

-------------------------------
رمز تمامی فایل ها:
answercenter.ir
 
 

قسمت اول:ساخت بانک انلاین و فایل های php

 

 

لینک دانلود اموزش و فایل های قسمت اول

 

لینک فایل های قسمت اول

 

 

قسمت دوم:اپدیت بانک انلاین در بیسیک فور اندروید

 

 

لینک دانلود اموزش و سورس قسمت دوم

 

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

 

تاپیک کتابخانه okhttp

 

 

main_activity

Sub Process_Globals
Dim sql As SQL
Dim cur As Cursor
End Sub

Sub Globals
Private ListView1 As ListView
Private Button1 As Button
Dim ht As HttpJob
Dim rowCount As Int
Dim ht2 As HttpJob
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("l")
	If File.Exists(File.DirInternal,"db.db") = False Then
		File.copy(File.DirAssets,"db.db",File.DirInternal,"db.db")
	End If
	If sql.IsInitialized = False Then
		sql.Initialize(File.DirInternal,"db.db",True)
	End If
	showlist
	ht.Initialize("job1",Me)
	ht2.Initialize("job2",Me)
End Sub

Sub Activity_Resume
End Sub

Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Button1_Click
	ht.PostString("http://www.schoolearn.ir/shahab/amoozeshi/amoozeshe_update_db/check.php","")
	ProgressDialogShow("updating...")
End Sub
Sub showlist
	ListView1.clear
		cur = sql.ExecQuery("SELECT * FROM tbl_name")
	For i = 0 To cur.RowCount - 1
		cur.Position = i
		ListView1.AddSingleLine2(cur.GetString("lname")&"-----"&cur.GetString("name"),cur.GetInt("id"))
	Next
	ListView1.SingleLineLayout.Label.Gravity = Gravity.CENTER
End Sub
Sub jobdone (job As HttpJob)
	If job.Success = True Then
		If job.JobName = "job1" Then
		cur = sql.ExecQuery("SELECT * FROM tbl_name")
		rowCount = cur.RowCount
		If job.GetString > rowCount Then	
			cur = sql.ExecQuery("SELECT * FROM tbl_name")
			rowCount = cur.RowCount
			ht2.PostString("http://www.schoolearn.ir/shahab/amoozeshi/amoozeshe_update_db/getcontent.php","tedad="& rowCount &"")
		Else
			ToastMessageShow("db is up to date!!!",False)
		End If
		else if job.JobName = "job2" Then
		If job.GetString = "nothing" Then
			ToastMessageShow("error",False)
		Else 
			Dim str1() As String = Regex.Split("<br>",job.GetString)
			For i = 0 To str1.Length - 1
				Dim str2() As String = Regex.Split("#",str1(i))
				Try
					sql.ExecNonQuery("INSERT INTO tbl_name (id,name,lname) VALUES (null,'"&str2(1)&"','"&str2(2)&"')")
					showlist
				Catch
					Log(LastException)
				End Try
			Next
		ProgressDialogHide
		End If
		End If
	End If
End Sub

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

  • پاسخ 249
  • ایجاد شده
  • آخرین پاسخ

آفرین شهاب کارت عالیه 

معلوم میشه آموزش های من یکی از شاگردهام یاد گرفت (شوخی کردم شما استاد مایی)

:gol:  :ok:

 

---------------

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

روحیه دادید بهم :gol:

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

واقعا ی تشکر کافی نیست

گل کاشتی عزیز دلم عالیهعالیه

مهمش کن تا نکردم :D

من ک شخصا بلد نبودم و استفاده میکنم :):gol:

-------------

اتفاقا توی اون اپی که بهت گفتم، با اندروید استادیو پیادش میکنیم :)

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

بی نظیر و عالی و کاربردی
امید وارم دوستان قدر این آموزش ها رو بدونند 
یک دنیا سپپاس و آرزوی سلامتی برای شهاب اسکندری عزیز :gol:  :gol:  :gol:  :gol:  :gol:

---------

قربانت دوست قدیمی :)

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

عاااااالی بود استاد..

دمت گرم و آروزی موفقیت برای شما :gol:

قربانت عزیزم

 

---------

دوستان فقط توجه کنید

فایل check.php حتما فرمتش ANSI باشه

با فرمت های دیگه من چک کردم، invalidDouble میده

اما ANSI موردی نداشت

گفتم بهتون بگم، چون یکی از بچه ها مشکل داشت :gol:

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

من جلو جلو سوال های احتمالیو میگم تا هی نیای چواب بدی (ببین من چقدر خوبم خیــــــــــــــــــــــــــــــــــــــــــــلی  :eynak: )

1- با مولتی پنلشو چه فرقی های داره 

2- وقتی آپدیت شد آیتم های جدید رنگش فرق کنه (البته فقط دفعه اول ، از برنامه خارج شدیم مثل بقیه آیتم ها بشه ) 

خودم بلدم ولی حسش نیست 

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

در ضمن طبق ویرایشی که تو پست من انجام دادی من خوابم شما بیدار  :cheshmak:

اینم از روحیه دادن دوباره, دیگه چی میخای

بجنب بیدار جان ,بجنب  :oops:

:ok:

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

:D

خوبه

ببین استاد بیات

کلا فرقی نداره

ما الان داریم دیتا میریزیم توی کجا؟

توی دیتابیس

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

فقط برای اینکه مولتی پنل یه بار از اول مثلا لود شه و اضافه نشه به ایتم های قبلی

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


ScrollView1.Panel.RemoveAllViews
s = 0
ScrollView1.ScrollPosition = 0

s متغیری هست که ارتفاعش هر بار زیاد میشه

این از این

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

یه ستون میخواد دیتابیس

isUpdate مثلا

وقتی که میخوایم اطلاعات بانک انلاین رو اینسرت کنیم به افلاین

sql.ExecNonQuery("INSERT INTO tbl_name (id,name,lname) VALUES (null,'"&str2(1)&"','"&str2(2)&"')")

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

برای کای که گفتید باید 

sql.ExecNonQuery("INSERT INTO tbl_name (id,name,lnamem,isUpdate) VALUES (null,'"&str2(1)&"','"&str2(2)&"','1')")

کار کنیم

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

if cur.getstring("isUpdate") = 1 then
panel1.color = colors.Red
end if

و بعد از این کد هم باید بگیم

sql.exenonquery(UPDATE tbl SET isUpdate = '0'")

چون همه شون باید بشن 0 دیگه :)

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

شما خودتون استادید، اگر دوستان مشکلی داشتن بپرسن، منم ندونم، داداشا هستن :gol:

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

با سلام خدمت استاد عزیزمون آقا شهاب.

چجوری میشه فقط دیتا بیس رو آپدیت کرد با این دستورات؟ یعنی مثلا من یه دیتاییی داشتم الان دادهای اون دیتا رو تغییر دادم و فقط میخوام داده های جدید به اون اضافه بشه 2 اینکه داده های جدید جایگزین قبلیا بشه

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

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

سلام

قربانت

برای این راهی پیدا نکردم هنوز

این بیشتر برای اضافه شدن دیتا های جدیده

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

فک میکنم روی این مورد و اگه چیزی به ذهنم رسید براتون توضیح میدم

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

آقا شهاب اینجوری میشه که توی دیتا بیس آنلاین و آفلاین یه مقداری بذاریم هردفعه اون مقدار آفلاین رو با آنلاین چک کنه اگر اون مقدار جدید با مقدار قدیمی برابر نبود کل دیتا بیس رو با اس کیو ال جانشین کنه. اینجوری خوب نیست؟

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

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

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

متنشو بذار 1

یه 

dim ht_test as httpjob




ht_test.initialize("testJob",me)
ht_test.poststring("adress hamin fili ke goftam","")




sub job done (job as httpjob)
if job.success = true then
if job.jobname = "testJob" then
''''kod hat ke hazf besh o .....''''
end if 
end if
end sub

ببخش اگه غلط املایی نوشته

بیسیک پیشم نیس الان :)

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

الان دقیقا من چیو باید کامل کنم؟

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

حذف دیتابیس رو یا این که بفهمه دیتابیس باید حذف بشه و جدید از اول پر بشه رو :)

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

اگر زحمتی نباشه هردو رو با توجه به کدتون توضیح بدین

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

ببینید

بحثی که شما دنبال میکنید، اصلا بحث اپدیت نیست دوستم

کدها و اموزش های این تاپیک، مربوط به اپدیته

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

چایگزینی که با دنبال کردن اموزش، کاملا مشخص خواهد بود

میمونه فهمیدن برنامه که کی باید حذف کنه بانک رو

خوب

1- یه فایل تکست درست کنید و توش بنویسید 1 و به شکل زیر نام گذاریش کنید

check.txt

2-این فایل رو هم در هاستتون و هم در پوشه فایل های برنامه، قرار بدید

3- با کد زیر چک کنید که این فایل کپی شده به پوشه داخلی یا نه

اگه نه پس کپی بشه

if file.exist(file.dirinternal,"check.txt") = false then
file.copy(file.dirassets,"check.txt",file.dirinternal,"check.txt")
end if

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

1- بیاد اطلاعات بانک رو حذف کنه

2- متن فایل تکست موجود در هاست رو بریزه در فایل موجود در اندروید

dim testCheck as httpjob
-----------
testCheck.initialize("testCheck",me)
-----------
testCheck.postString("adressFile matni dar hostetoon","")

این کد ها، شروع کار هستن در اصل، پس در رویداد کلیک یا اکتیویتی کریت یا .... قرارشون بدید

خوب ، کدهای زیر مربوط به دو مرحله ای هستن که گفتم

sub jobdone(job as httpjob)
if job.success = true then
if job.jobname = "testCheck" then

if job.getstring = file.readString(file.dirinternal,"check.txt") then
'yani nabayad hazf beshe
else if
'bayad hazf beshe 
'adade jadid jaygozin beshe


try

sql.exenonqery("DELETE FROM tbl1")


file.writeString(file.dirinternal,"check.txt",job.getstring)

catch
'agar error bood che kar kone
end try

end if
end if
end if
end sub

کد های بالا میان و چک میکنن که باید دیتابیس حذف بشه یا نه

اگه باید حذف بشه میان و حذف میکنن و عدد قبلی رو میریزن تو فایل

در نتیجه اگر باز بخواین حذف کنید، میاین و ثلا عدد قبلی بوده 2 اینبار میزنین 3

حذف میکنه

هر زمان هم که برنامه به اینترنت متصل بشه، این کار هارو میکنه حتی اگه یه سال پیش این کارو کرده باشید :gol:

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

شما فوق العاده ای شهاب جان

مرسی واقعا

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

متلا بیاد بگه از تیبل 1 ستون ایدی گزینه اول رو چک کن اگر با اون گزینه برابر انلاین یکی نبود دانلود و جایگزین کنه منظو اصلیم اینه

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

قربانت

برادر وقتی میشه با یه فایل تکست خیلی راحت این کارو کرد، چرا خودمونو در گیر php و دیتابیس بکنیم؟

شما نمیتونین مقدار فایل تکست رو از توی هاستتون تغییر بدید؟(یه راست کلیک و ادیت و تغییر و سیو :))

مطمئن باشید که این دو روش هیچ فرقی ندارن

اگه اصرار به استفاده از دیتابیس دارید

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

یه ستون داره به نام adad

ای دی 1 رو بررسی میکنیم

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT adad FROM check";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
echo $row["adad"];    }
} else {
    echo "0 results";
}
$conn->close();
?>

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

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

فقط دقت کنید به جای اینکه ادرس فایل check.txt توی هاست رو بدید، ادرس این فایل رو باید بدید

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

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

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

بایگانی شده

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

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

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