milad.coder

نحوه ذخیره فایل در دیتابیس

5 ارسال در این موضوع قرار دارد

با سلام و عرض ادب

اول اینکه میشه یک سمپل برای وصل شدن به دیتابیس و عملیات (insert/delete/select) برام بزارید ؟

دوم اینکه چطوری میتونم یک فایل رو در دیتابیس ذخیره کنم ؟

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


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

از این مثال استفاده کنید،کلیه امکانات در این برنامه پیاده سازی شده است :

http://p30droid.com/showthread.php?tid=50

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

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

package com.isummation.customgallery;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHelper extends SQLiteOpenHelper {static final String dbName = "attach.db";static final String bankTable = "bank";public DatabaseHelper(Context context) {	super(context, dbName, null, 33);}public void onCreate(SQLiteDatabase db) {	// TODO Auto-generated method stub	db.execSQL("CREATE TABLE admin (id INTEGER PRIMARY KEY, username TEXT, password TEXT, sec_question TEXT, sec_answer TEXT)");	db.execSQL("CREATE TABLE [bank] ([id] INTEGER  PRIMARY KEY NULL,[old_file_address] TEXT  NULL,[filename] TEXT  NULL,[thumnail] TEXT  NULL,[ext] TEXT  NULL)");	db.execSQL("CREATE TABLE [enc] ([id] INTEGER  NOT NULL PRIMARY KEY,[MasterKey] TEXT  NULL)");}public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {	// TODO Auto-generated method stub	//db.execSQL("DROP TABLE IF EXISTS " + bankTable);	//db.execSQL("DROP TABLE IF EXISTS " + deptTable);//	db.execSQL("DROP TRIGGER IF EXISTS dept_id_trigger");//	db.execSQL("DROP TRIGGER IF EXISTS dept_id_trigger22");//	db.execSQL("DROP TRIGGER IF EXISTS fk_empdept_deptid");//	db.execSQL("DROP VIEW IF EXISTS " + viewEmps);//	onCreate(db);}public void InsertNew(String FileAddr,String FileName,String thumbnail,String Ext) {	SQLiteDatabase db = this.getWritableDatabase();	ContentValues cv = new ContentValues();	cv.put("old_file_address", FileAddr);	cv.put("filename", FileName);	cv.put("thumbnail", thumbnail);	cv.put("Ext", Ext);	db.insert(bankTable, null, cv);		db.close();}public Cursor BindAll()  {	   SQLiteDatabase db=this.getReadableDatabase();	   Cursor cur=db.rawQuery("select * from bank",new String [] {});	   return cur;	  }}

و همچنین برای اجرای دستور InsertNew در خود برنامه به صورت زیر عمل میکنم : 

DatabaseHelper db = new DatabaseHelper(getApplicationContext());							db.InsertNew(selectImages, SelectedFile.getName().toString(), SelectedFile.getName().toString(), ext);

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


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

اول عدد 33 را به 1 تغییر دهید :

   public DatabaseHelper(Context context) {        super(context, dbName, null, 33);    }

مشکل شما دقیقا  اینجاس ..اگر به این کد نگاه کنید شما در بالای کدها اسم جدول رو  bankTable قرار داده اید ، اما در قسمت oncreate دستورات ایجاد جدول را نوشته اید اما از ان اسم جدول خبر نیست :

 db.execSQL("CREATE TABLE [bank] ([id] INTEGER  PRIMARY KEY NULL,[old_file_address] TEXT  NULL,[filename] TEXT  NULL,[thumnail] TEXT NULL,[ext] TEXT  NULL)");

تصحیح شده :

 db.execSQL("CREATE TABLE "+ bankTable +" ([id] INTEGER  PRIMARY KEY NULL,[old_file_address] TEXT  NULL,[filename] TEXT  NULL,[thumnail] TEXT NULL,[ext] TEXT  NULL)");

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

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


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

دوست عزیز اگر بیشتر به کد توجه کنید میبینید که bankTable یک متغیر استرینگ هست که مقداری که در آن هست همان اسم جدول ایجاد شده است : 

static final String bankTable = "bank";

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری