جستجو در انجمن

در حال نمایش نتایج برای برچسب های 'دیتابیس اندروید'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


برنامه نویسی اندروید | آموزش برنامه نویسی اندروید | آموزش اندروید

  • اندروید
    • ابزار های برنامه نویسی اندروید
    • آموزش برنامه نویسی اندروید
    • رفع مشکلات و سوالات
    • امنیت در اندروید
    • پروژه های اندروید
  • پشتیبانی اندروید
    • اندروید Lollipop
    • اندروید marshmallow
    • اندروید nougat
    • اندروید Oreo
  • کاتلین (Kotlin)
    • آموزش های برنامه نویسی Kotlin
    • سوالات و رفع مشکلات Kotlin
  • مباحث مرتبط با اندروید
    • ابزارها و سایتهای مفید
    • گرافیک موبایل
    • آموزش های ویدئویی
    • برنامه نویسی جاوا
  • تکنولوژی های اندروید
    • وب موبایل
    • توسعه اندروید با #C
    • توسعه اندروید با Basic4Android
  • متفرقه
    • اپلیکیش های ایرانی
    • برنامه نویسی
    • درخواست همکاری
    • مباحث متفرقه
    • مهارتهای فروش و بازاریابی
  • پشتیبانی محصولات مارکت
    • پرسش و پاسخ مرتبط با مارکت انجمن اندروید ایران
    • پشتیبانی مارکت پروژه های اندروید
    • پشتیبانی مارکت آموزش اندروید
    • پشتیبانی مارکت گرافیک موبایل
  • انجمن اندروید ایران
    • اخبار و اعلانات
    • صندوق پيشنهادات و انتقادات
    • تازه‌های دنیای کامپیوتر و فناوری
    • قوانین انجمن تخصصی اندروید ایران

دسته ها

  • پروژه اندروید
    • سورس پروژه اندروید
    • کامپوننت های اندروید
    • کتابخانه های اندروید
  • آموزش اندروید
    • فیلم آموزشی کاربردی
    • مقالات آموزشی اندروید
  • گرافیک موبایل
    • قالب طراحی اپلیکیشن
  • اپلیکیشن های اندروید
    • کاربردی
    • کسب و کار
    • آموزش
    • کتاب‌ها و منابع
    • ویدئو و رسانه
    • بازی‌

تقویم ها

  • Community Calendar

20 نتیجه پیدا شد

  1. توی این پست میخوایم طریقه کار با دیتابیس خارجی رو اموزش بدیم. برای این کار با نرم افزار SQLite Expert Personal یا هر نرم افزاری که راحت بودین دیتابیس و درست می کنیم. توی این برنامه دیتابیس ExternalDB رو با یک جدول به نام tbl1 و دو فیلد به نامهای Id و Name ایجاد کردیم. و داده های مورد نظر را توی جدول وارد میکنیم. کارمون با دیتابیس خارجی تموم شد حالا برنامه نویسی رو شروع می کنیم. پروژه جدیدی ایجاده کرده و دیتابیسی که درست کرده بودیم و توی پوشه asset قرار میدیم. فایل Database.java رو ایجاد کرده و کد زیر رو توی اون تایپ می کنیم. package com.p30droid.externaldatabase; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; 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.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; public class Database extends SQLiteOpenHelper { String DB_PATH = null; public static String DB_NAME = "ExternalDB"; private SQLiteDatabase myDataBase; private final Context myContext; /** * Constructor Takes and keeps a reference of the passed context in order to * access to the application assets and resources. * * @param context */ public Database(Context context) { super(context, DB_NAME, null, 2); this.myContext = context; DB_PATH = "/data/data/" + context.getPackageName() + "/" + "databases/"; } public void createDataBase() throws IOException { boolean dbExist = checkDataBase(); if (dbExist) { // do nothing - database already exist } else { // By calling this method and empty database will be created into // the default system path // of your application so we are gonna be able to overwrite that // database with our database. this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } } private boolean checkDataBase() { SQLiteDatabase checkDB = null; try { String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); } catch (SQLiteException e) { // database does't exist yet. } if (checkDB != null) { checkDB.close(); } return checkDB != null ? true : false; } /** * Copies your database from your local assets-folder to the just created * empty database in the system folder, from where it can be accessed and * handled. This is done by transfering bytestream. * */ private void copyDataBase() throws IOException { // Open your local db as the input stream InputStream myInput = myContext.getAssets().open(DB_NAME); // Path to the just created empty db String outFileName = DB_PATH + DB_NAME; // Open the empty db as the output stream OutputStream myOutput = new FileOutputStream(outFileName); // transfer bytes from the inputfile to the outputfile byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } // Close the streams myOutput.flush(); myOutput.close(); myInput.close(); } public void openDataBase() throws SQLException { // Open the database String myPath = DB_PATH + DB_NAME; // SQLiteDatabase.NO_LOCALIZED_COLLATORS myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.CREATE_IF_NECESSARY); } @Override public synchronized void close() { if (myDataBase != null) myDataBase.close(); super.close(); } // return cursor public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) { return myDataBase.query("pwp_singers", null, null, null, null, null, null); } @Override public void onCreate(SQLiteDatabase arg0) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub } } خط 21 اسم دیتابیس و قرار دادیم.توابع دیگه هم مربوط به باز کردن،بستن،چک کردن وجود دیتابیس و ... هست(لازم به توضیح بود بگین توضیح بدمش) توی فایل activity_main.xml یه لیست ویو قرار میدیم. توی فایلMainActivity.java کد زیر و تایپ می کنیم. package com.p30droid.externaldatabase; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; import android.app.Activity; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; public class MainActivity extends Activity { Database myDbHelper; SQLiteDatabase db; ListAdapter adapter; ArrayList> data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lst=(ListView) findViewById(R.id.listView1); Load_Database(); db = myDbHelper.getReadableDatabase(); Cursor c = db.rawQuery("select * from tbl1", null); data = new ArrayList>(); for (; c.moveToNext() { HashMap map = new HashMap(); String id = c.getString(c.getColumnIndex("Id")); String name = c.getString(c.getColumnIndex("Name")); map.put("id", id); map.put("name", name); data.add(map); } adapter = new list_view(this, data); lst.setAdapter(adapter); } private void Load_Database() throws Error { myDbHelper = new Database(MainActivity.this); try { myDbHelper.createDataBase(); } catch (IOException ioe) { throw new Error("Unable to create database"); } try { myDbHelper.openDataBase(); } catch (SQLException sqle) { throw sqle; } } } خط 25 دیتابیس و چک میکنیم که ایجاد شده یا نه.اگه هست بازش کنه اگه نه ایجاد میکنه. خط 27 اسم جدول و نوشتیم تا اطلاعات اونو بخونیم. خط 32و 33 فیلدهایی که میخوایم و قرار دادیم و در اخر هم با اداپتور اونو توی لیست ویو میریزیم. خط 38 هم از لیست ویو سفارشی استفاده کردیم که اموزشش تو سایت هست . اینم فایلهاش فایل list_view.java package com.p30droid.externaldatabase; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.content.res.AssetManager; import android.graphics.Color; import android.graphics.Typeface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class list_view extends BaseAdapter { private Activity activity; private ArrayList> data; private LayoutInflater inflate; ViewHolder holder; public list_view(Activity a, ArrayList> d) { // TODO Auto-generated constructor stub activity = a; data = d; inflate = (LayoutInflater) activity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { // TODO Auto-generated method stub return data.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int arg0, View view, ViewGroup arg2) { // TODO Auto-generated method stub View v1 = view; if (v1 == null) { v1 = inflate.inflate(R.layout.list_view, null); holder = new ViewHolder(); holder.txt_name = (TextView) v1.findViewById(R.id.txt_name); holder.txt_id = (TextView) v1.findViewById(R.id.txt_id); holder.txt_id.setVisibility(View.GONE); v1.setTag(holder); } else { holder = (ViewHolder) v1.getTag(); } HashMap song = new HashMap(); song = data.get(arg0); holder.txt_id.setText(song.get("id")); holder.txt_name.setText(song.get("name")); return v1; } static class ViewHolder { TextView txt_name; TextView txt_id; } } فایل list_view.xml <?xml version="1.0" encoding="utf-8"?> android:layout_width="fill_parent" android:layout_height="fill_parent" > android:id="@+id/txt_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="22dp" android:layout_marginTop="30dp" /> android:id="@+id/txt_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/txt_name" android:layout_marginRight="96dp" android:layout_toLeftOf="@+id/txt_name" /> و خروجی کار سورس برنامه
  2. سلام من میخوام برای یه سایتی که با کلاسی پرس پیاده شده اپلیکیشن بنویسم از طریق دیتابیس. بخش ثبت نام و لاگین رو نمی دونم چطوری رمز عبور هش شده . چطور باید بفهمم؟
  3. سلام یک دیتابیس دارم و میخوام یکسری اطلاعات ازش بخونم و داخل editText نمایش بدم ولی مشکل داره ... لطفا کد منو بررسی کنید ببینید درسته ؟؟ کد مربوط به کلاس دیتابیس : public void R(int ID, String code, String Date) { Cursor cursor = database.rawQuery("SELECT cStockShare,pStockShare,zStockShare," + " FROM dd WHERE code = '" + code + "' and Date = '" + Date + "' and ID = '" + ID + "';", null); cStockShare = cursor.getInt(cursor.getColumnIndex("cStockShare")); pStockShare = cursor.getInt(cursor.getColumnIndex("pStockShare")); zStockShare = cursor.getInt(cursor.getColumnIndex("zStockShare")); cursor.close(); } کد مربوط به اکتیویتی : db = new G(); db.R(ID, code, Date); c.setText(String.valueOf(db.cStockShare)); p.setText(String.valueOf(db.pStockShare)); z.setText(String.valueOf(db.zStockShare)); با تشکر
  4. سلام با برنامه DB Browser for SQLite دیتابیس رو ویرایش میکنم اما بعضی جول ها رو نمیتونم ویرایش انجام بدم. جدول های قسمت views که با پیشوند view شروع میشن...
  5. سلام خدمت همه دوستان من یک دیتابیس خارجی درست و در پروژه خود اضافه کردم. حالا میخوام اطلاعات مورد نظر را از دیتابیس بخونم و داخل لیست ویو سفارشی خودم قرار بدم. به عنوان مثال میخوام نام و آدرس را از دیتابیس بخونم و در لیست ویو سفارشی بصورت 2 تا تکست جداگانه اضافه کنم. ممنون میشم اگر بصورت گام به گام راهنماییم کنید. باتشکر از اعضاء محترم
  6. سلام. من تو برنامم از دیتا بیس استفاده کرد. در ورژن جدید برنامه ام در دیتابیس تغییراتی ایجاد کردم.اما و وقتی روی یک گوشی ک قبلا برنامه نصب بوده،حالا دوباره نصب میکنم دیتا بیس تغییری نکرده.و باید کلا برنامه رو اول از روی گوشی انیستال کنم و دوباره نصب کنم تا تغییرات دیتا بیسو ببینم. برای رفع این مشکل باید چ راه حلی بکار ببرم؟
  7. سلام من برای فرا خوانی عکس از دیتابیس یه table توی دیتابیس درست کردم اسم عکس ها را درون اون نوشتم و عکس هارا توی برنامه کپی کردم و به برنامه گفتم اسم عکس ها را با نام های توی دیتابیس مطابقت بده و هر کدوم مطابقت داره نمایش بده ولی تعداد که زیاد میشه رم گوشی جواب نمیده و ارور میده String aks = MainActivity.fruits.get(position).getAks(); int id = MainActivity.context.getResources().getIdentifier(aks,"drawable",MainActivity.context.getPackageName()); holder.aks.setImageResource(id); اینم کد اون قسمت از برنامم ممنون میشم اگه راهنمایی ام کنید
  8. با سلام من یک کاردویو دارم شامل یک imageview و یک textview (برای پرچم و نام کشور) که برای نمایش عکس مشکل دارم. من فعلا دوفایل عکس رو در assets قرار دادم و اسم عکس رو هم در دیتابیس نوشتم توی کلاس آداپتر این کدها رو نوشتم: public void onBindViewHolder(ViewHolder holder, int position) { Database database=new Database(context); //from database holder.txt_countryname.setText(items.get(position).getCountry_Name()); //holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,items.get(position).getFlag())); holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"iran.png")); holder.img_flags.setImageBitmap(database.getBitmapFromAsset(context,"argentina.png")); و در کلاس فرگمنت که قراره عکس در اون نمایش داده بشه: public void loadDatabase(){ Database database=new Database(getContext()); database.CreateDatabase(); database.openDatabase(); Cursor cursor=database.QueryData("SELECT * FROM Country WHERE Ghareh='آفریقا'"); if (cursor!=null && cursor.moveToFirst()) { do { Structure structure = new Structure(); structure.setCountry_Name(cursor.getString(1)); structure.setFlag(cursor.getString(4)); arrayList.add(structure); } while (cursor.moveToNext()); } } ولی موقع اجرا در همه ایمیج ویو ها (برای همه کشور ها) یک پرچم نمایش داده میشه! راهنمایی کنید ممنون میشم
  9. SQLite یک پایگاه داده منبع باز است که برای ذخیره فایل های متنی در برنامه نویسی موبایل مورد استفاده قرار می گیرد.این پایگاه داده برای ایجاد پایگاه داده های برنامه های موبایل اندروید مورد استفاده قرار می گیرد.SQLite از تمام ویژگی های پایگاه داده های دیگر پشتیبانی می کندو برای ایجاد ارتباط میان هر پایگاه داده ای دیگری مثل JDBC,ODBC نیاز به هیچ جز اضافه ای ندارد. پایگاه داده - بسته اصلی این بسته اصلی android.database.sqllite می باشد که شامل کلاس های مختلف برای مدیرتی پایگاه داده است. ساخت پایگاه داده برای ساخت پایگاه داده های برنامه های اندروید فقط نیاز به فراخوانی نام پایگاه داده با استفاده از متد OpenOrCreateDatabase و یک پارامتر است.همانطور که نمونه آن را در کد زیر می بینید SQLiteDatabase mydatabase = openOrCreateDatabase("your database name",MODE_PRIVATE,null); توابع و متد های دیگری در پایگاه داده SQLLite وجود دارد که دستورهای دیگری را اجرا می کنند: openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags, DatabaseErrorHandler errorHandler) این متد پایگاه داده های موجود دیگر را با مقدار داده ای flag باز می کند.حالت flag شامل دو حالت OPEN_READWRITE و OPEN_READONLY می باشد. openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags) این دستور، مانند دستور بالا پایگاه داده را باز می کند با این تفاوت که هیچ کنترلی روی بررسی اشتباهات و مشکلات موجود در پایگاه داده ندارد. openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory) این دستور نه تنها پایگاه داد را باز می کند بله در صورتیکه پایگاه داده اگر موجود نباشد آن را می سازد.این دستور مشابه دستور بالا عمل میکند. openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory) این دستور نیز مشابه دستور بالا است با این تفاوت که بجای رشته، فایل object را بعنوان پارامتر ورودی دریافت می کند. ()file.getPath درج اطلاعات در دیتابیس با استفاده از دستور execSQL که در پایگاه داده SQLite وجود دارد می توان دستور insert را نوشت. mydatabase.execSQL("CREATE TABLE IF NOT EXISTS TutorialsPoint(Username VARCHAR,Password VARCHAR);"); mydatabase.execSQL("INSERT INTO TutorialsPoint VALUES('admin','admin');"); دستور بالا اطلاعات را درون جدول درج میکند، دستور دیگری که مشابه دستور بالا عمل می کند دستور زیر است execSQL(String sql, Object[] bindArgs) این دستور علاوه بر درج اطلاعات، اطلاعت قبلی موجو در دیتابیس را ویرایش یا جایگزین می کند. دریافت اطلاعات جداول برای دریافت اطلاعات یک جدول از یک شی کلاس Cursor استفاده می کنیم.برای اینکار از متد rawQuery استفاده می کنیم Cursor resultSet = mydatbase.rawQuery("Select * from TutorialsPoint",null); resultSet.moveToFirst(); String username = resultSet.getString(1); String password = resultSet.getString(2); کد بالا با استفاده از دستور MoveToFirst تابع را به ابتدای سطر جدول می برد و از انجا شروع به خواندن اطلاعات و ذخیره آنها در دو متغیر username و password ذخیره می کند. دستورات دیگری که ایمشابه کد بالا عمل می کنند عبارتند از: getColumnCount(): مجموع تعداد ستون های جدول را بازمیگرداند. getColumnIndex(String columnName): یک عدد شاخص از یک ستون با نام آن ستون را باز می گرداند. getColumnName(int columnIndex): یک ستون با index آن را باز می گرداند. getColumnNames(): آرایه ای از نام های تمام ستون های جدول را باز میگرداند. getCount(): تعداد کل ردیف های را که اشاره گر در آنها قرار دارد باز می گرداند. getPosition(): موقعیت اشاره گر را در جدول باز می گرداند. isClosed(): اگر اشاره گر به انتها رسیده باشد مقدار true و اگر غیر این باشد مقدار false را باز می گرداند. مدیریت عملیات پایگاه داده برای مدیریت تمام عملیات درون پایگاه داده یک کلاس کمکی به نام SQLLiteOpenerHelper وجود دارد که تمام عملیات درون ایگاه داده را بطور خودکار ایجاد و به روزرسانی می کند.کد آن در زیر آمده است: public class DBHelper extends SQLiteOpenHelper { public DBHelper(){ super(context,DATABASE_NAME,null,1); } public void onCreate(SQLiteDatabase db) {} public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {} } در مقاله بعدی یک نمونه مثال که شامل ایجاد جدول،درج و اصلاح اطلاعات و خواندن آنها از درون جدول است، را باهم مرور میکنیم.با سروش پرداز همراه باشید.
  10. در مقاله قبل در مورد پایگاه داده برنامه های اندروید صحبت کردیم و گفتیم پایگاه داده مورد استفاده برنامه های اندرویدی Sqlite می باشد، مولفه های مختلف Sqlite را معرفی کردیم در این مقاله یک نمونه مثال از این پایگاه داده را به همراه کدهای آن توضیح می دهیم. مثال استفاده شده ساخت یک پایگاه داده برای ذخیره مخاطبین تلفن همراه است با استفاده از این پایگاه داده می توان اطلاعات تماس تلفن همراه را درج، حذف، ویرایش کرد. برای تست این مثال می بایست آن را روی دستگاه واقعی دوربین دار تست کنید. با استفاده از اندروید استودیو یک برنامه کاربردی تحت عنوان com.example.sairamkrishna.myapplication بسازیم. برای ساخت این برنامه و پایگاه داده به ترتیب مراحل زیر را انجام می دهیم: 1.برای ساخت این پروژه مطمئن شوید که اندروید SDK از آخرین نسخه پشتیبانی کند تا با API های نسخه بالا همخوانی داشته باشند. 2.فایل SRC/MainActivity.java را می گذاریم تا توسط آن همه مولفه های XML و اخرین تماس ها را دریافت کند. Src/DBHelper.java.3 را می سازیم، که عملکرد دیتابیس را مدیریت می کند. 4.یک مولفه جدید با عنوان DisplayContact.java ایجاد می کنیم تا تماس های روی صفحه را نمایش دهد. 5.تغییر res/layout/activity_main و res/layout/activity_display_contact.xml که برای اضافه شدن مولفه های xml است. 6.تغییر فایل res/values/string.xml برای افزودن اجزای رشته ای ضروری است. 7.قرار دادن فایل res/menu/display_contact.xml برای ایجاد منوهای ضروری 8.ایجاد منو res/menu/mainmenu.xml برای قرار دادن امکان درج مخاطب 9.اجرای نرم افزار بر روی یک دستگاه اندرویدی و نصب برنامه روی آن در ادامه کدهای مربوط به مرحل بالا را قرار می دهیم. با نوشتن این کدها مرحله به مرحله دیتا بیس ما ایجاد می شود. محتوای MainActivity.java. را با استفاده از کدهای زیر ویرایش می کنیم. package com.example.sairamkrishna.myapplication; import android.content.Context; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends ActionBarActivity { public final static String EXTRA_MESSAGE = "MESSAGE"; private ListView obj; DBHelper mydb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mydb = new DBHelper(this); ArrayList array_list = mydb.getAllCotacts(); ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list); obj = (ListView)findViewById(R.id.listView1); obj.setAdapter(arrayAdapter); obj.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { // TODO Auto-generated method stub int id_To_Search = arg2 + 1; Bundle dataBundle = new Bundle(); dataBundle.putInt("id", id_To_Search); Intent intent = new Intent(getApplicationContext(),DisplayContact.class); intent.putExtras(dataBundle); startActivity(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ super.onOptionsItemSelected(item); switch(item.getItemId()) { case R.id.item1:Bundle dataBundle = new Bundle(); dataBundle.putInt("id", 0); Intent intent = new Intent(getApplicationContext(),DisplayContact.class); intent.putExtras(dataBundle); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } } public boolean onKeyDown(int keycode, KeyEvent event) { if (keycode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(true); } return super.onKeyDown(keycode, event); } } در زیر محتوای فایل DisplayContact.java برای تطبیق با برنامه اصلاح شده است: package com.example.addressbook; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class DisplayContact extends Activity { int from_Where_I_Am_Coming = 0; private DBHelper mydb ; TextView name ; TextView phone; TextView email; TextView street; TextView place; int id_To_Update = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_contact); name = (TextView) findViewById(R.id.editTextName); phone = (TextView) findViewById(R.id.editTextPhone); email = (TextView) findViewById(R.id.editTextStreet); street = (TextView) findViewById(R.id.editTextEmail); place = (TextView) findViewById(R.id.editTextCity); mydb = new DBHelper(this); Bundle extras = getIntent().getExtras(); if(extras !=null) { int Value = extras.getInt("id"); if(Value>0){ //means this is the view part not the add contact part. Cursor rs = mydb.getData(Value); id_To_Update = Value; rs.moveToFirst(); String nam = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_NAME)); String phon = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_PHONE)); String emai = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_EMAIL)); String stree = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_STREET)); String plac = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_CITY)); if (!rs.isClosed()) { rs.close(); } Button b = (Button)findViewById(R.id.button1); b.setVisibility(View.INVISIBLE); name.setText((CharSequence)nam); name.setFocusable(false); name.setClickable(false); phone.setText((CharSequence)phon); phone.setFocusable(false); phone.setClickable(false); email.setText((CharSequence)emai); email.setFocusable(false); email.setClickable(false); street.setText((CharSequence)stree); street.setFocusable(false); street.setClickable(false); place.setText((CharSequence)plac); place.setFocusable(false); place.setClickable(false); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. Bundle extras = getIntent().getExtras(); if(extras !=null) { int Value = extras.getInt("id"); if(Value>0){ getMenuInflater().inflate(R.menu.display_contact, menu); } else{ getMenuInflater().inflate(R.menu.main, menu); } } return true; } public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch(item.getItemId()) { case R.id.Edit_Contact: Button b = (Button)findViewById(R.id.button1); b.setVisibility(View.VISIBLE); name.setEnabled(true); name.setFocusableInTouchMode(true); name.setClickable(true); phone.setEnabled(true); phone.setFocusableInTouchMode(true); phone.setClickable(true); email.setEnabled(true); email.setFocusableInTouchMode(true); email.setClickable(true); street.setEnabled(true); street.setFocusableInTouchMode(true); street.setClickable(true); place.setEnabled(true); place.setFocusableInTouchMode(true); place.setClickable(true); return true; case R.id.Delete_Contact: AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(R.string.deleteContact) .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { mydb.deleteContact(id_To_Update); Toast.makeText(getApplicationContext(), "Deleted Successfully", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(getApplicationContext(),MainActivity.class); startActivity(intent); } }) .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // User cancelled the dialog } }); AlertDialog d = builder.create(); d.setTitle("Are you sure"); d.show(); return true; default: return super.onOptionsItemSelected(item); } } public void run(View view) { Bundle extras = getIntent().getExtras(); if(extras !=null) { int Value = extras.getInt("id"); if(Value>0){ if(mydb.updateContact(id_To_Update,name.getText().toString(), phone.getText().toString(), email.getText().toString(), street.getText().toString(), place.getText().toString())){ Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(getApplicationContext(),MainActivity.class); startActivity(intent); } else{ Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show(); } } else{ if(mydb.insertContact(name.getText().toString(), phone.getText().toString(), email.getText().toString(), street.getText().toString(), place.getText().toString())){ Toast.makeText(getApplicationContext(), "done", Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(getApplicationContext(), "not done", Toast.LENGTH_SHORT).show(); } Intent intent = new Intent(getApplicationContext(),MainActivity.class); startActivity(intent); } } } } در مقاله بعدی می توانید ادامه آموزش را دنبال کنید.
  11. یکی از کارهایی که برای مدیریت دیتابیس برای برنامه نویسان اندروید الزام میباشد تبدیل دیتابیس ها به دیگر دیتابیس های دیگر میباشد مثلا mysql به sqlite و .... برای تبدیل دیتابیس های دیگر به sqlite که نیاز برنامه نویسان میباشد ابزاری را معرفی میکنیم که توانایی این را دارد که دیتابیس های mysql، Oracle،Postgresql را به Sqlite تبدیل کند. برای دریافت این نرم افزار به آدرس زیر مراجعه نمایید: http://www.sqlabs.com/sqliteconverter.php
  12. سلام یه نکته آموزشی خیلی ریز: موقعی که دارید با دیتابیس کار میکنید و بیش از یه بار کوئری میزنید به دیتابیس تون ممکنه با خطای (conn# 0) already closed مواجه بشید راه حل: یا توی کوئری های ماقبل آخر SQLdatabase رو close() نکنید ==> db.close() یا به تعداد کوئری هاتون از کلاس SQLdatabase یه آبجکت بسازید و باهاش کار کنید
  13. همچنان میدانید در بخش اول دیتابیس به توضیفی از sqlite پرداختیم.در صورتی مقاله اول را مطالعه نکرده اید،حتما آن را مطالعه کنید. ابتدا یک پروژه جدید را ایجاد کنید و اسم آن را مثلا dbAndroid بگذارید. سپس ورژن اندروید خود را مشخص کنید...که در این پروژه 2.3.3 را در نظر گرفته ایم در مرحله آخر نام پکیج و اکتیویتی خود را وارد کنید. دکمه finish را بزنید تا پروژه شما اماده شود. اولین قدم برای اینکه بتوانیم از sqlite استفاده کنیم این است که یک کلاس جدید را ایجاد کنید.برای اینکار روی نام پکیچ کلیک راست و گزینه new ->class را انتخاب کنید تا کادر زیر ظاهر شود. بعد از ایجاد کردن کلاس باید از کلاس SQLiteOpenHelper ارث بری کنیم .بعد از اینکار رنگ قرمزی روی نام کلاس ظاهر میشود که برای این میباشد که حتما باید توابع سازنده را ایجاد کنید.که بعد از اینکار سه تابع که در تصویر نشان داده شده اضافه میشوند. بعد از اینکار ها بهتر است در قسمت general متغیر هایی را بصورت سراسری تعریف کنیم تا در کلاس های دیگر نیز بتوانیم فراخوانی کنیم.ابتدا در تابع onCreate دستور مربوطه به ایجاد جدول را بنویسید و در تابع onUpgrade هم دستور مربوط به پاک کردن اطلاعات جدول را بنویسید.بعد از اینکار ها میتونید در هر جای برنامه فقط با صدا زدن نام کلاس و ایجاد کردن یک شی از آن میتوانیم از دیتابیس اندروید به راحتی استفاده کنید بعد از نوشتن دستورات بالا به سراغ طراحی کردن یک UI ساده میرویم تا با وارد کردن اطلاعات در دو EditText اطلاعات را در دیتابیس ذخیره کنید خروجی UI بدین صورت میباشد. کار بدین صورت میباشد که وقتی کاربر روی دکمه save کلیک کرد اطلاعات در دیتابیس ذخیره میشود در خط 13 : ابتدا باید یک شی جدید از کلاس قبلی را ایجاد کنیم خط 14 : یک متغیر از نوع SQLiteDatabase را تعریف میکنیم تا بتوانیم عملیات های مختلف پایگاه داده را انجام دهیم خط 15 : برای اینکه بتوانیم اطلاعات را در مکانی قرار دهیم بعد ذخیره شود از ContentValues استفاده میکنیم در تابع OnCreate هم ابتدا خاصیت مربوط به دکمه را در حالتی وقتی که روی آن کلیک کردیم قرار میدهیم بعد از این کارها نوبت به نوشتن کدهای ثبت اطلاعات میباشد ، بعد از انتخاب دکمه مربوطه یک پیغام چاپ میشود مینی بر اینکه اطلاعات ثبت شد. خط 33: در این خط ما به شی db میگوییم که میتواند که اطلاعات را در دیتابیس بنویسد خط 34: در این خط شی content را ایجاد میکنیم تا مقادیر را در آن قرار دهیم خط های 35 و 36 مقادیر مربوط به فیلدهای name,lname را قرار میدهد خط 37 : اطلاعات در دیتابیس ذخیره میکند خط 38 : یک پیغام را توسط Toast چاپ میکند
  14. برای اینکار دو روش وجود دارد: 1- اینکه عکس را در دیتابیس ذخیره وسپس در برنامه نمایش دهیم. 2-اینکه نام عکس را در دیتابیس ذخیره و خود تصاویر را در پوشه ریسورس برنامه مثلا در drawable ذخیره و سپس با توجه به نام آن تصویر را در ایمیج ویو لود کنیم. ما روش دوم را در این اموزش بررسی خواهیم کرد. به کد زیر توجه کنید: ImageView img; Database myDbHelper; SQLiteDatabase db; img = (ImageView) findViewById(R.id.imageView1); db = myDbHelper.getWritableDatabase(); String s = getIntent().getStringExtra("id"); Cursor c = db.rawQuery("select * from student where stu_id = " + id, null); if (c.moveToNext()) { img_name = c.getString(c.getColumnIndex("img")); Log.d("img", img_name); String uri = "drawable/" + img_name; // int imageResource = R.drawable.icon; int imageResource = getResources().getIdentifier(uri, null, getPackageName()); Drawable image = getResources().getDrawable(imageResource); img.setImageDrawable(image); } همانطور که مشخص است بعد از زدن یک کوئری در دیتابیس نام تصویر مربوط به دانشجوی مورد نظر را گرفته و سپس id ایمیج مورد نظر را در ریسورس های برنامه به دست آورده و آن را در ایمیج ویو نشان می دهد. امیدوارم این آموزش مقبول افتد.
  15. در اندروید 4 روش برای ذخیره اطلاعات وجود دارد : 1- Shared preferences 2- Sqlite Databases 3- Content Provider 4- Files که بیشتر بر روی Sqlite(http://www.sqlite.org) کار خواهیم کرد و بقیه را در آموزش های بعدی معرفی خواهم کرد،بحث دیتابیس بدلیل گستردگی، نمی توان در یک آموزش بیشتر مباحث را شرح داد پس مرحله به مرحله پیش می رویم و در مرحله اول با ساختار دیتابیس و پیشنیازهای اولیه کار خواهیم کرد. دیتابیس Sqlite : Sqlite یک موتور دیتابیسی کوچک ولی قوی بود که توسط دکتر ریچارد هیپ در سال 2000 میلادی ایجاد شد. Sqlite ابتدا توسط اپل برای iphone ، موبایل های Symbian ،موزیلا فایرفاکس ، Skype ، PHP ، Adobe Air ، Mac OS X ، Solaries و بیشتر محیط های برنامه نویسی دیگر نیز استفاده می شد.که در اندروید نیز از همین دیتابیس استفاده خواهد شد. برای مدیریت دیتابیس sqlite باید از برنامه های زیر استفاده کنید : 1- SqliteAdmin 2- sqliteBrowser 3- یک ADD-ONS Mozilla به نام SQLite Manager 4- و . . . [align=center] توانایی های Sqlite عبارتند از : [/align][align=center][/align] بیشتر این ایتم های بررسی خواهند شد و مثال های کاربردی نیز ارائه خواهد شد و برای شروع با متدها و کلاس های دیتابیس آشنا خواهیم شد. - چگونه دیتابیس را باز کنیم روش اول) public staticSQLiteDatabase.openDatabase( Stringpath, SQLiteDatabase.CursorFactoryfactory, intflags ) پارامتر ها : Path : مسیر دیتابیس Factory : یک متد اختیاری برای وقتی که Cursor یک شرط را فراخوانی می کند استفاده می شود( cursor بعدا بررسی خواهد شد) Flags : برای کنترل کردن حالت دسترسی به دیتابیس که سه حالت دارد : OPEN_READWRITE- OPEN_READONLY- CREATE_IF_NECESSARY مثال 1 ) ایجاد کردن دیتابیس Sqlite : [/align][align=center] شرح کدها : ابتدا باید یک متغیر از نوع SQLiteDatabase با اسم db بصورت عمومی اعلان کنیم، تا بتوانیم در قسمت های دیگر کلاس ازش استفاده کنیم. سپس در متد OnCreate باید دیتابیس باز کنیم( دیتابیس که قبلا وجود دارد) اگر وجود نداشت آنرا ایجاد خواهد کرد. ارگومان "/data/data/cis493.sqldatabases/myfriendsDB" مسیر دیتابیس را که با نام myfriendsDB ایجاد کرده ایم را باز می کند. و پوشه های data که آمده ، برای این است که در حین اجرای برنامه در آن مسیر قرار گرفته.برای دستیابی به این مسیر در ایکلیپس باید آیکن DDMS را که در بالای برنامه قرار دارد را انتخاب کرده ، سپس در کادر باز شده روی تب File Exploree رفته و می توانید مسیر را مانند نمونه بالا پیدا کنید که باید در مسیر data نام پروژه خود را انتخاب و سپس در پوشه database نام دیتابیس قرار داده شده را مشاهده کنید. [/align][align=center] - متد db.close(); : بستن دیتابیس روش دوم) روش دوم برای بازکردن/ ایجاد کردن دیتابیس در داخل برنامه بصورت زیر میباشد [/align][align=center][/align] - اجرای دستورات : بعد از اینکه دیتابیس باز/ایجاد شد ، می توان روی دیتابیس اعمال : ایجاد جداول،حذف جداول، افزودن اطلاعات و ... قابل انجام خواهد بود. 1- ایجاد جدول : کلا برای کار با sqlite باید با زبان sql آشنایی کافی داشته باشید.برای ایجاد جدول مانند زیر از دستور : create table tblAMIGO( recIDinteger PRIMARY KEY autoincrement, name text, phone text ); استفاده می کنیم.این دستور یک جدول با نام tblAMIGO را که دارای سه فیلد میباشد ایجاد می کند. نوشتن دستور در برنامه نویسی : db.execSQL("create table tblAMIGO("+ " recID integer PRIMARY KEY autoincrement, "+ " name text, "+ " phone text ); " ); شی db را قبلا ایجاد کرده ایم و توسط متد execSQL می توان دستورات sql را نوشت.از این متد برای اجرای دستور استفاده می شود. 2- افزودن اطلاعات : برای این کار دقیقا مانند مثال بالا عمل می کنید و دستور insert را اجرا می کنید : db.execSQL( "insert into tblAMIGO(name, phone) values ('AAA', '555' );" ); این خط باعث افزودن یک رکورد اطلاعاتی به جدول مربوطه می شود. که فیلد اول بصورت یکتا میباشد ، فیلد دوم AAA و فیلد سوم 555 در آن قرار می گیرد. مثال های زیر هم : db.execSQL( "insert into tblAMIGO(name, phone) values ('BBB', '777' );" ); db.execSQL( "insert into tblAMIGO(name, phone) values ('CCC', '999' );" ); دو رکورد در آن قرار می دهند. ** برای افزودن اطلاعات به جدول مثلا یک اطلاعات خاصی که کابر وارد کند باید یک textview را تعریف کرد و در دستور db.execSQL( "insert into tblAMIGO(name, phone) values (t1.getText(), '777' );" ); اصلاعات آن را در فیلد مربوطه قرار داد. فیلدهای پشتیبان کننده Sqlite : text,varchar, integer, float, numeric, date, time, timestamp, blob, boolean که بیشترشون مشخص هستند و نیاز به توضیح خاصی در مورد کاربردشون نیست. بهتره همیشه موقعی که دستورات نوشته بشه درون یک try /catch نوشته بشه و برنامه crash نکنه و بتونید برنامه را مدیریت کنید تا از بروز خطا و خروج از برنامه جلوگیری بشه. مانند مثال زیر ) try{ //perform your database operations here ...} catch(SQLiteException e){ //report problem }finally{ db.endTransaction(); }
  16. بببخشید شما یه اموزش تو انجمن گذاشته بودید برای دیتا بیس این قسمت اخرش رو ننوشته بودن میتونید یه راهنمایی کنید تو عکس زیر ببینید
  17. سلام دوستان . من میخوام یه برنامه خبری بنویسم . مثلا پست بذارم که شامل عکس و اینچیزا باشه . و میخوام دیتابیس رو سرور باشه و از طریق گوشی بهش دسترسی داشته باشم . لطفا کمک کنید که چجوری میشه ساختش . این اموزشای توی اینترنت هم که نفهمیدم چی شد . خواهش میکنم کمک کنید
  18. با سلام من می خوام مبحث دیتابیس در اندروید را کامل یادبگیرم ولی به این صورت که در sqllite database browser پایگاهم را بسازم و سپس در اکلیپس به آن وصل و queryهایی را روش اجرا کنم ولی هر چی مطلب پیدا کردم در eclipse آمده با دستورات sql پایگاه را از اول ساخته من پایگاهم آماده است و می خوام بهش وصل و ازش استفاده کنم اگر داکیومنت انگلیسی هم باشه اشکال نداره
  19. در این تاپیک بنا به درخواستی از کاربران محترم انجمن پی سی دروید که خواستار ، قرار دادن لینک دانلود برنامه SqliteAdmin میباشد،را قرار میدهیم. sqliteadmin.zip sqliteadmin.zip
  20. SQLite یک برنامه مدیریت بانک اطلاعاتی مبتنی بر زبان استاندارد SQL هست. بر خلاف مدل های مرسوم بانک اطلاعاتی که به صورت Client/Server هستند و نیاز به نصب و پیکر بندی های خاص خودشون دارن، SQLite تنها یک برنامه مدیریت بانک اطلاعاتی مستقل هست که نیازی به هیچ گونه نصب و پیکر بندی ای نداره و مهمترین هدف از عرضه اون به کار گریش به صورت ضمیمه شده در سیستم های مختلف هست. یک مثال خیلی کارا در این رابطه میتونه برنامه های موبایل و سیستم عامل های موبایل باشه که با توجه به ماهیت اونها ضرورت به کار گیری چنین برنامه های مدیریت بانک اطلاعاتی رو دو چندان میکنه. SQLite به صورت رایگان عرضه میشه و مجوز همراه اون امکان استفاده از اون رو در هر سطحی رو میده که بسیار ارزشمند هست. بعبارتي SQLite یک پایگاه داده کوچک (حجمی در حدود 500 KB) که به زبان C در قالب یک کتابخانه (Library) نوشته شده است و از پایگاه داده های RDBMS به حساب می آید. این پایگاه داده بدون لیسانس (Public Domain) ، آزاد و open source منتشر می شود SQLite Expert ابزاری قدرتمند و ویژوال می باشد که به شما این امکان را می دهد تا بتوانید به آسانی دیتا بیس های SQLite خود را مدیریت نموده و دید بهتری نسبت به اینکه چگونه دیتا بیس شما عمل می کند، بدست آورید. این نرم افزار، مدیریت دیتا بیس و نگه داری از آن را در محیطی یکتا و یکپارچه و با واسطی گرافیکی تمیز و بدیع، ترکیب می نماید . با استفاد ه از SQLite Expert قادر خواهید بود جداول و نماها رابصورت بصری و بدون نوشتن حتی یک خط SQL ویرایش نمایید. قابلیتهای کلیدی نرم افزار SQLite Expert v2.0.28 : * درباره سازی ساده فیلدها، فهرست ها، قید ها، تریگر ها بدون از دست دادن اطلاعات موجود برروی جداول * ساختن اسکریپتهای SQL و تولید نماها بصورت بصری با استفاده از سازنده Query * ایحاد دیتابیس های SQL ، مشاهده و تغییر پارامترهای دیتابیس ، بررسی تمامیت دیتابیس و فشردگی آن * انتقال آسان دیتا میان دیتابیس های SQLite * وارد کردن اطلاعات از اسکریپتهای SQL یا اطلاعت منبع ADO یا استخراج اسکریپتهای SQL * نمایش و ویرایش دیتا بصورت گرافیکی ، شامل فیلدهای تصویر و BLOB * پشتیبانی از فرمتهای تصویری BMP, JPG و PNG * اجرای Query های SQL و نمایش نتایج بصورت گرافیکی یا متنی