08-26-2013، 08:26 PM
Sub Process_Globals
Dim mysqlc As SQLCipher
'اینجا یه متغیر برای ساخت یه دیتابیس کد شده تعریف می کنیم Dim sql1 As SQL' اینجا هم یه متغیر دیتابیس معمولی که داریم رو تعریف می کنیمDim mysqlc As SQLCipher
End Sub
Sub Globals
Dim label1 , label2 As Label
Dim curs1 , curs2 As Cursor
Dim list1 As List
' اینجا یه لیست می سازیم که بتونیم اطلاعات رو جابجا کنیم از دیتابیس معمولی به کریپت شدهSub Globals
Dim label1 , label2 As Label
Dim curs1 , curs2 As Cursor
Dim list1 As List
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("layout1")
File.Copy (File.DirAssets , "sia.db", File.DirInternal , "sia.db")
sql1.Initialize (File.DirInternal , "sia.db" , False)
'اینجا دیتابیس اصلی رو میریزم تو حافظهSub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("layout1")
File.Copy (File.DirAssets , "sia.db", File.DirInternal , "sia.db")
sql1.Initialize (File.DirInternal , "sia.db" , False)
If File.Exists (File.DirInternal , "sia5.db")= False Then
mysqlc.Initialize (File.DirInternal , "sia5.db", True , "1234test" , File.DirAssets)
'اینجا می گیم اگه دیتابیس کریپت شده قبلا ساخته نشده بسازه و پسورد بهش میدیم که باید دقت بشه پسورد فراموش نشه تا بتونیم در برنامه اصلیمون از دیتابیس با همین پسورد استفاده کنیمmysqlc.Initialize (File.DirInternal , "sia5.db", True , "1234test" , File.DirAssets)
و بعد از پسورد ازمون می خواد که آدرس فایل sqlcipher_native.zip رو بدیم که همینی که من دادم رو بده عزیز و حتما این فایل رو در برنامه کنار لایه ها ادد کن در قسمت فایل (خودت کپی پیست نکن و از قسمت فایل و ادد استفاده کن
)mysqlc.ExecNonQuery("CREATE TABLE shim (Ename TEXT , Fname TEXT)")
'اینجا دیتابیس کریپت شده رو می گیم یه جدول بسازه با دو تا ستون که از اینجاها مثل کد های sql هست و اینکتابخانه تو این کدها هیچ فرقی نداره باsqlElse
mysqlc.Initialize (File.DirInternal , "sia5.db", True , "1234test" , File.DirAssets)
'اینجا هم گفتیم اگه ساخته شده فقط تعریف کنه با پسوردی که دادیم قبل بهشmysqlc.Initialize (File.DirInternal , "sia5.db", True , "1234test" , File.DirAssets)
End If
curs1=sql1.ExecQuery ("SELECT Ename, Fname FROM shim")
'اینجا هم اطلاعات دیتابیس انتقال می دیم به داخل این متغیر که تعریف شده در بالا curs1=sql1.ExecQuery ("SELECT Ename, Fname FROM shim")
For n=0 To curs1.RowCount -1
' یه حلقه اینجا درست کردیم که اطلاعات دیتابیس معمولیمون رو بریزه تو دیتابیس کریپت شده و انتقال بده
curs1.Position = n
' یه حلقه اینجا درست کردیم که اطلاعات دیتابیس معمولیمون رو بریزه تو دیتابیس کریپت شده و انتقال بده
curs1.Position = n
list1= Array As String (curs1.GetString ("Ename") , curs1.GetString ("Fname"))
mysqlc.ExecNonQuery2 ("INSERT INTO shim VALUES (?,?)" ,list1 )
Next
' کار تمومه و دیتابیس کریپت شده آماده هست و در اینجا برای تست که نشون می ده اطلاعات رو از داخل دیتابیس کریپت شده اونها رو رو لیبل هامون چک می کنیمmysqlc.ExecNonQuery2 ("INSERT INTO shim VALUES (?,?)" ,list1 )
Next
curs2= mysqlc.ExecQuery ("SELECT Ename,Fname From shim")
curs2.Position = 3
label1.Text = curs2.GetString ("Fname")
label2.Text = curs2.GetString ("Ename")
End Sub
همونطور که دیدی همه چیز مثل sql هست و این کتابخانه فقط در inistalize یکم فرق داره تعریفش که باید پسورد و محل فایلsqlcipher_native.zip رو نشون بدی که حتما باید این فایل رو در پوشه فایل ادد کنید از داخل خود برنامه تا کار کنه امیدوارم توضیحات کامل باشهتوجه کنید که اینجا داریم یه دیتابیس معمولی رو تبدیل به دیتابیس کریپت شده میکنیم که دیتابیس کریپت شده داخل گوشی یا ایمولاتور هست و باید درش بیارید که با برنامه eclips می شه یا با رفتن به روت و پیدا کردن دیتابیس داخل برنامه ای که ساختیدبعد می تونید ازش استفاده کنید با همین کتابخانه sqlcipher و دادن رمزتون که قبلا براش تعیین کردیدcurs2.Position = 3
label1.Text = curs2.GetString ("Fname")
label2.Text = curs2.GetString ("Ename")
End Sub
برای مشاهده بهتر این کدها بهتره اول اونهارو کپی کنید داخل برنامه اونجا درست نشون می ده