بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
سوال : قرار دادن دیتابیس در محلی به دور از دسترس کاربر
مدیریت گفتگو
آخرین تغییر: 11 سال پیش
دوستان من می خوام دیتابیس رو در حافظه داخلی ذخیره کنم و نمی خوام در پوشه data / pakages ذخیره بشه ؟؟
ممنون و سپاس
پاسخها 3
یه سوال الان اگه دیتابیس رو سرور باشه بعد چطوری کاربر یا حتی برنامه نویس میتونه به دیتابیس دسترسی داشته باشه ؟
چطوری تو php امنیت دیتابیس تامین هست ولی اینجا نیست ؟
نظرات
تغییر ادرس database ( دیتابیس )
package com.amirahmadadibi.project.app.book;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class database extends SQLiteOpenHelper {
//خط زیر سورسی هست که قرار دیتابیس توی اون کپی بشه
//-------------------------------------------------------------------
public final String path = "data/data/com.amirahmadadibi.project.app.book/databases/";
//-------------------------------------------------------------------------
public final String Name = "dataofstorys";
public SQLiteDatabase mydb;
private final Context mycontext;
public database(Context context) {
super(context, "dataofstorys", null, 1);
mycontext = context;
}
@Override
public void onCreate(SQLiteDatabase arg0) {
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
}
public void useable() {
boolean checkdb = checkdb();
if (checkdb) {
} else {
this.getReadableDatabase();
try {
copydatabase();
}
catch (IOException e) {
}
}
}
public void open() {
mydb = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READWRITE);
}
@Override
public void close() {
mydb.close();
}
public boolean checkdb() {
SQLiteDatabase db = null;
try {
db = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READONLY);
}
catch (SQLException e) {
}
return db != null ? true : false;
}
public void copydatabase() throws IOException {
OutputStream myOutput = new FileOutputStream(path + Name);
byte[] buffer = new byte[1024];
int lenght;
InputStream myInput = mycontext.getAssets().open(Name);
while ((lenght = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, lenght);
}
myInput.close();
myOutput.flush();
myOutput.close();
}
این کد کلا برای کار های کپی دیتا بیس هستش چک میکنه که ایا دیتا بیس کپی شده یا نه اگه نه کپی میکنه اگه اره نمیکنه
نظرات
ممنون از شما پس بنده اگر مسیر path رو به صورت دستی چیزی جدای از ا مسیر بالا که به بخش data ختم میشه بزارم مشکلی نداره می خوام طوری باشه که دیتام به هیچ عنوان در میسر پوشه data نباشه
چند لحظه وایسا تا تست کنم
برای اینکه از سرقت اطلاعات جلوگیری کنی لزومی نیست دیتابیس رو مخفی کنی ، چون به راحتی میشه پیدا کردش بهترین کار این هست که دیتابیست رو انکریپت بکنی و با استفاده از لایبری زیر بازش کنی اینطوری دیگه هیچ کس نمیتونه به دیتابیس ما دسترسی داشته باشه .
موفق باشید :)
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات