-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
آقا poorman جان
من دارم قطعه کدم رو میذارم توی یه پروژه دیگه که هم قشتگتره هم اینکه اسلایدرمنو داره. تست کردم خوب جلو میره فقط یجاش مشکل دارم:
ببینید کد من این بود اولش:
public class DatabasesActivity extends ListActivity {
به همین خاطرم میتونستم از توایعی همچون setListAdapter به راحتی استفاده کنم. حالا کد این پروژه این هست اولش:
public class MainActivity extends Activity {
یعنی توی کدی که لیست ویوویی برای اجرای اسلاید منو داره از extends Activity اسفاده شده ودرحالی است که من extends ListActivity نیاز دارم.
حالا اومدم توی اسلایدر Avtivity رو به ListActivity تبدیل کردم، لاگ گرفتم دیدم تا زمانیکه وارد فایل xml نمیشه مشکل نداره، به محض ورود به xml خراب میشه و force close میده...
فایل های xml رو مقایسه کردم دیدم لیست ویو به دو مول id گرفته:
1: لیست ویوی موجود در extends ListActivity اینه:
android:id="@android:id/list"
2:لیست ویوی موجود در extends Activity این هست:
android:id="@+id/list_slidermenu"
من تفاوت این دوتا رو نفهمیدم، هرقدرم سعی کردم حالت دوم رو مثل حالت اول مقدار دهی کنم نشد... اکلیپس اررور میده میگه که:
Error: No resource found that matches the given name (at 'id' with value '@android:id/list_slidermenu')
دوستان کسی هست بتونه منو راهنمایی کنه بزرگان؟ من باید چکار کنم؟!
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
جناب جعفری عزیز
لطفا از این به بعد توی این تاپیک فقط سوال های مربوط به دیتابیس رو مطرح کنید. متشکرم
و اما جواب سوالتون: وقتی کلاس شما از listActivity ارث بری کنه توی صفحه xml فقط باید لیست ویو باشه، حتی میتونید xml هم نداشته باشید
در این حالت صفحه شما فقط یک لیست رو نمایش میده
اما وقتی از اکتیویتی ارث بری میکنید یک layout رو setContentView میکنید
ابتدای متد onCreate باید بگید
setContentView(R.layout.yourLayoutName);
بعدش میتونید لیست ویو رو با آیدی که براش توی xml دادید، مشخص کنید و آداپترش رو بهش بدید
-
1 ضمیمه
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
با سلام و خسته نباشید
من یه جدولی مثل تصویر زیر دارم (جدول اولیه) که می خوام یک لیست جدیدی از اون تهیه کنم به صورتی که در این لیست جدید به تعداد عدد موجود در ستونی با عنوان (Count) ، اسامی رو تکرار کنه . یعنی بشه مثل جدول موردنیاز در تصویر زیر.
حالا هر چی کد زیر رو میزنم، صحیح کار نمیکنه و خروجی که در لیست ویو نمایش میده غلطه.
public ArrayList<String> GetList() {
ArrayList<String> List = new ArrayList<String>(0);
Cursor c = mydb.rawQuery("select * from TABLE " , null);
for (int i = 0; i < c.getCount(); i++) {
c.moveToPosition(i);
int T = c.getInt(c.getColumnIndex("Count"));
for (int j = 0; j < T; j++) {
List.add(c.getString(c.getColumnIndex("Name")));
}
}
c.close();
return List;
}
میشه لطفا بفرمایید کجای کوئری که به بانک میزنم ایراد داره؟
با سپاس...
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام آقا علیرضا
والا من توی این کدها خطایی نمیبینم
خروجی بهتون چی میده؟
مطمئن بشید که اطلاعات جدولتون درست هست و آپدیت شده
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
آقا ممنون . مشکلم حل شد.
اشکال از کوئری نبود؛ من در یک اکتیویتی دو تا لیست ویو (سفارشی) رو باهم نشون میدادم. حالا در قسمت آداپتور ، فقط از یک کلاس آداپتور برای نمایش هر دو تا لیست استفاده می کردم و این بود که اشتباه نشون میداد. حالا برای هرلیست یک آکلاس داپتور جدید در همون اکتیویتی ساختم و دیگه مشکل حل شد.:چشمک:
پس در کل درسته که بگیم نمیشه برای دوتا لیست ویو که مقادیر لیست متفاوتی رو قراره نشون بدن، از یک آداپتور استفاده کرد؟؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
alireza142
پس در کل درسته که بگیم نمیشه برای دوتا لیست ویو که مقادیر لیست متفاوتی رو قراره نشون بدن، از یک آداپتور استفاده کرد؟؟
در صورتی که ساختار لیست های شما یکی باشه میشه از یک کلاس آداپتر استفاده کرد ( مثلا هر دو تا فقط تکست رو نمایش میدن )
اما برای اینکه مشکلی پیش نیاد شما باید برای آداپتر هر لیست، یک آبجکت جدید از کلاس آداپترتون براش بسازید ( مثلا آداپتر 1 و 2 )
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
توی sqlite چطور میشه مثل sql ویو ، پروسیجر و با ... رو ایجاد کرد ؟
یا پسورد گذاشت ؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
لینکی معرفی می کنید که در مورد کد کردن دیتابیس sqlite در برنامه نویسی اندروید بحث شده باشه
ترجیها در انجمن های فارسی و در اکلیپس
ممنون
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
ghasem110deh
سلام
توی sqlite چطور میشه مثل sql ویو ، پروسیجر و با ... رو ایجاد کرد ؟
یا پسورد گذاشت ؟
سلام
تا جایی که بنده اطلاع دارم این قابلیت ها توی sqlite وجود نداره
باز هم برای پروسیجر مطمئن نیستم
ولی قطعا پسوورد نمیتونید بذارید
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
Apriliyaa
سلام
لینکی معرفی می کنید که در مورد کد کردن دیتابیس sqlite در برنامه نویسی اندروید بحث شده باشه
ترجیها در انجمن های فارسی و در اکلیپس
ممنون
سلام
دیتابیس توی اندروید امنیت نداره و روش قابل اطمینانی برای این کار نیست
یک ابزار به اسم سیفر بود فکر کنم که توی همین انجمن راجع بهش بحث شده بود، اما آخرش نتیجه درستی نداشت مبحث
درکل تا جایی که بنده اطلاع دارم، دیتابیس رو هرکاریش کنید بازم در میاد
تنها راهتون برای امنیت اینه که دیتاهاتون لوکال نباشه و داخل سرور باشه
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
سلام
تا جایی که بنده اطلاع دارم این قابلیت ها توی sqlite وجود نداره
باز هم برای پروسیجر مطمئن نیستم
ولی قطعا پسوورد نمیتونید بذارید
چرا دیگه ... میشه ! (گذاشتن پسورد روی sqlite)
http://web.archive.org/web/200708130...ums/t/130.aspx
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
ghasem110deh
دوست عزیز این برای سی شارپ و برنامه نویسی ویندوز هست، من توی اندروید و جاوا تا حالا ندیدم !!!
دیتابیس شما به هر شکلی که باشه در دسترس بقیه قرار میگیره و میتونه اطلاعاتش رو ببینه
روی خود دیتابیس نمیتونید پسوورد بذارید اما میتونید محتوا و اطلاعات داخل اون رو انکریپت یا رمزگذاری کنید.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
این لینک رو یک چک بکنید
https://guardianproject.info/code/sqlcipher/
برای دیتابیس ران تایم راهکار داده، اما برای دیتابیس از پیش ساخته شده راهکاری نداده
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
ممنون
توی برنامه های ویندوزی که هیچکی انگار کار نکرده با sqlite ...
هر چی سرچ میزنی واسه برنامه های موبایله !
رو موبایل و نمیدونم ولی رو ویندوز که راحت میشه جداول و دید ؟
یعنی عقلشون به اینجا نرسیده که یه قفل ساده مثل access روش بزارن ؟
رو sql server هم همینطوره ... واسه یه برنامه انبارداری ساده کلی دنگ و فنگ واسه رمزگذاری و رمزگشایی داری !!!
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
با سلام
آقای poorman اگه امکان داره یه نمونه پروژه ساده که در آن از insert , delete و وارد کردن عکس در پایگاه داده استفاده شده بزارید
مرسی
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
آقا poorman عزیز یه سر به این پست میزنی؟
اتفاقا دیتابیسی هم هست
ممنون
https://barnamenevis.org/showthread.p...8%D9%87-sqlite
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
m_jafari_1370
سلام
بنده تا حالا به هیچ مشکلی توی فارسی وارد کردن برنخوردم
از نرم افزار SQLite Database browser استفاده کنید
https://github.com/sqlitebrowser/sqlitebrowser/releases
فایل exe رو بگیرید
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
dariush110
با سلام
آقای
poorman اگه امکان داره یه نمونه پروژه ساده که در آن از insert , delete و وارد کردن عکس در پایگاه داده استفاده شده بزارید
مرسی
سلام
متاسفانه فرصت کافی ندارم
ایشالا اگر وقت کردم چشم
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
با سللم
اگه میشه روش استفاده از setOnItemClickListener در لیست سفارشی آموزش بدین
وقتی که روی آیتمی کلیک شه بره تو دیتابیس id فرستاده شده از لست ویو را به صفحه دیگر ببره و تون صفحه اطلاعات مربوط به اون id رو نمایش بده
مرسی اگه کمک کنین:تشویق:
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
با سلام دوباره خدمت poor man عزیز...
ممنون از تاپیک
خوبتون..
اگه بخوام عکسهای کنار هر آیتم توی لیست ویو رو تغییر بدم و هر کدوم یه imageView متفاوت کنارش باشه،چه کدی رو باید توی کلاس دیتا بیس اضافه اضافه کنم؟؟
یکی دیگه هم اینکه عکس ها رو برای این مورد کجا بریزم؟؟؟
شما یه توضیح کوتاه دادین ولی ممنون اگه با اطلاعات تکمیلی که توی ادامه میزارم کمکم کنین...
من عکس هامو تو پوشه drawable ریختم ،بعد توی دیتا بیسم یه فیلد با عنوان picture اضافه کردم که اسم عکس ها رو با اسم عکس های توی پوشه drawable یکی گذاشتم، کد های دیتابیس و mainactivity که میخواد لیست رو نشون بده میزارم ممنون اگه نگاه کنین و بگین چه کده دیگه لازمه...
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
با سلام دوباره خدمت poor man عزیز...
ممنون از تاپیک
خوبتون..
اگه بخوام عکسهای کنار هر آیتم توی لیست ویو رو تغییر بدم و هر کدوم یه imageView متفاوت کنارش باشه،چه کدی رو باید توی کلاس دیتا بیس اضافه اضافه کنم؟؟
یکی دیگه هم اینکه عکس ها رو برای این مورد کجا بریزم؟؟؟
شما یه توضیح کوتاه دادین ولی ممنون اگه با اطلاعات تکمیلی که توی ادامه میزارم کمکم کنین...
من عکس هامو تو پوشه drawable ریختم ،بعد توی دیتا بیسم یه فیلد با عنوان picture اضافه کردم که اسم عکس ها رو با اسم عکس های توی پوشه drawable یکی گذاشتم، کد های دیتابیس و mainactivity که میخواد لیست رو نشون بده میزارم ممنون اگه نگاه کنین و بگین چه کده دیگه لازمه...
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
کد های دیتابیسم...
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHandler extends SQLiteOpenHelper {
public final String path = "data/data/com.kheirimohammad.full_heart/databases/";
private static final String DATABASE_NAME = "full_h";
public SQLiteDatabase mydb;
private final Context mycontext;
// //////table field////////
public final String TABLE ="tbl";
public final String ID = "id";
public final String NAME = "name";
public final String SUB = "sub";
public final String FATHER = "father";
public final String FATHERNAME = "fathername";
public final String NAMEHTML = "namehtml";
public final String PICTURE = "picture";
public final String FAV = "fav";
public DatabaseHandler(Context context) {
super(context, "full_h", 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() throws SQLException {
mydb = SQLiteDatabase.openDatabase(path + DATABASE_NAME, null,
SQLiteDatabase.OPEN_READONLY);
}
@Override
public void close() {
mydb.close();
}
public boolean checkdb() {
SQLiteDatabase db = null;
try {
db = SQLiteDatabase.openDatabase(path + DATABASE_NAME, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLException e) {
}
return db != null ? true : false;
}
public void copydatabase() throws IOException {
OutputStream myOutput = new FileOutputStream(path + DATABASE_NAME);
byte[] buffer = new byte[1024];
int lenght;
InputStream myInput = mycontext.getAssets().open(DATABASE_NAME);
while ((lenght = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, lenght);
}
myInput.close();
myOutput.flush();
myOutput.close();
}
////
public String[] GetListMain(String field) {
Cursor c = mydb.rawQuery("select * from " + TABLE + " where " + FATHER + " = '0' ORDER BY " + ID , null);
String[] list = new String[c.getCount()];
if (c.moveToFirst()) {
for (int i = 0; i < c.getCount(); i++) {
c.moveToPosition(i);
list[i] = c.getString(c.getColumnIndex(field)).toString();
}
}
return list;
}
public Integer shomaresh_field(String table,String field){
Cursor Cursor = mydb.rawQuery("SELECT * FROM "+TABLE+" group by "+field, null);
int i = Cursor.getCount();
return i ;
}
public String namayesh_field (String table , int row){
Cursor Cursor = mydb.rawQuery("SELECT * FROM "+TABLE+" group by name",null);
Cursor.moveToPosition(row);
String save = Cursor.getString(1);
return save;
}
public Integer shomaresh_dastan (String table , String name){
Cursor Cursor = mydb.rawQuery("SELECT * FROM "+TABLE+" where season='"+name+"' group by name", null);
int s = Cursor.getCount();
return s;
}
}
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
اینم کد های main activity:
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
public class MainActivity extends ListActivity {
private DatabaseHandler db;
private ListView listview;
private String[] mainlist;
private ArrayAdapter<String> adabter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new DatabaseHandler(this);
db.getReadableDatabase();
db.useable();
refresher();
setListadapter(new AA());
}
private void setListadapter(AA aa) {
}
class AA extends ArrayAdapter<String> {
public AA() {
super(MainActivity.this,R.layout.item_item_main,ma inlist);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater bazkonande = getLayoutInflater();
View radif = bazkonande.inflate(R.layout.item_item_main, parent,
false);
TextView name = (TextView) radif.findViewById(R.id.tv_nameMaine);
ImageView ax = (ImageView) radif.findViewById(R.id.img_axMaine);
//if (isTablet(getApplicationContext())) {
//}
name.setText(mainlist[position]);
db.open();
String[] axhaName = db.GetListMain(db.PICTURE);
db.close();
int[] cod = new int[axhaName.length];
for (int i = 0; i < axhaName.length; i++) {
cod[i] = Integer.parseInt("R.drawable." + axhaName[i]);
}
ax.setImageResource(cod[position]);
return radif;
}
}
private void refresher(){
db.open();
int save = db.shomaresh_field("tbl", "name");
mainlist = new String[save];
for (int i = 0; i <save; i++) {
mainlist[i] = db.namayesh_field("tbl", i);
}
db.close();
}
-
1 ضمیمه
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
راستی اسم ذیتا که توی assets ریختم full_h هستش و اسم table دیتا tbl هستش...ممنون یه نگاه بندازی ببینی درست استفادشون کردم...
اینم item_item_main.xml من....
ضمیمه 128437
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
ببخشید که من سوالمو اینجا مطرح می کنم. اما واقعا کارم گیره. من یه تعداد عکس دارم که می خوام داخل پایگاه داده ذخیره کنم. اما نمی دونم چه طوری. ممنون میشم اگر راهنماییم کنید.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
rainbow17
با سلام به poor man عزیز...
من عکس هامو تو پوشه drawable ریختم ،بعد توی دیتا بیسم یه فیلد با عنوان picture اضافه کردم که اسم عکس ها رو با اسم عکس های توی پوشه drawable یکی گذاشتم، کد های دیتابیس و mainactivity که میخواد لیست رو نشون بده میزارم ممنون اگه نگاه کنین و بگین چه کده دیگه لازمه...
با سلام
دوست عزیز اگر سایر کدهاتون رو درست نوشته باشید ( یعنی عکس ها رو به درستی از دیتابیس دریافت کنید )
تنها مشکلی که به چشم بنده میخوره این قسمت از آداپتر شماست
for (int i = 0; i < axhaName.length; i++) {
cod[i] = Integer.parseInt("R.drawable." + axhaName[i]);
}
این رو شکل زیر تغییر بدید
for (int i = 0; i < axhaName.length; i++) {
cod[i] = getResources().getIdentifier(axhaName[i], "drawable", getPackageName());
}
در صورتی که خطای دیگه داشتید متاسفانه به دلیل کمبود وقت نمیتونم کمکی کنم
از پرسیدن سوال های نامرتبط با موضوع تاپیک لطفا خودداری کنید
تشکر
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
dariush110
با سللم
اگه میشه روش استفاده از setOnItemClickListener در لیست سفارشی آموزش بدین
وقتی که روی آیتمی کلیک شه بره تو دیتابیس id فرستاده شده از لست ویو را به صفحه دیگر ببره و تون صفحه اطلاعات مربوط به اون id رو نمایش بده
مرسی اگه کمک کنین:تشویق:
با سلام
لطفا از پرسیدن سوالات نامرتبط با موضوع تاپیک خودداری کنید
دوست عزیز بنده میتونم در این مورد شما رو راهنمایی کنم ولی متاسفانه نمونه کد نمیتونم بذارم
شما آرایه ای که دارید توی لیست ویو نمایش میدید رو دارید، حالا نیاز به یک آرایه دیگه برای آیدی ها دارید که ذخیره شون کنید
وقتی روی یک آیتم لیست ویو کلیک میشه با position آیتمی که کلیک شده، از داخل آرایه آیدی ها، آیدی رو بخونید
بعد با استفاده از intent و putExtra مقدار آیدی رو به صفحه دیگه بفرستید و اونجا اطلاعات اون آیدی خاص رو نمایش بدید
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
Sina.iRoid
سلام
ببخشید که من سوالمو اینجا مطرح می کنم. اما واقعا کارم گیره. من یه تعداد عکس دارم که می خوام داخل پایگاه داده ذخیره کنم. اما نمی دونم چه طوری. ممنون میشم اگر راهنماییم کنید.
با سلام
عکس های شما به صورت بایت توی دیتابیس ذخیره میشه
باید ابتدا عکس رو تبدیل به bitmap کنید و سپس بایت های عکس رو ذخیره کنید
این نمونه کد insert کردن یک عکس با اسم توی جدول
byte[] img = null;
Bitmap b = null; // your image goes here
ByteArrayOutputStream bos = new ByteArrayOutputStream();
b.compress(Bitmap.CompressFormat.PNG, 100, bos);
img = bos.toByteArray();
SQLiteStatement p = mydb.compileStatement("insert into pictures (name, image) values(?, ?)");
p.bindBlob(2, img);
p.bindString(1, "1.jpg");
p.execute();
این هم نمونه کد خواندن
byte[] img = null;
Cursor c = mydb.rawQuery("select * from pictures", null);
if(c.moveToLast()){
img = c.getBlob(2);
}
Bitmap b = BitmapFactory.decodeByteArray(img, 0, img.length);
imgView.setImageBitmap(b);
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام دوست عزیز
شما با هر دو روش استفاده از دیتا بیس توی اندروید کار کردین هم بدون لایبرری و هم با لایبرری
پیشنهادتون واسه کار با دیتابیس کدوم هست؟
استفاده از لایبرری سرعت دسترسی به دیتابیس رو کم نمیکنه (در صورتی که دیتابیس ما بسیار حجیم باشه)؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
skkhossein
سلام دوست عزیز
شما با هر دو روش استفاده از دیتا بیس توی اندروید کار کردین هم بدون لایبرری و هم با لایبرری
پیشنهادتون واسه کار با دیتابیس کدوم هست؟
استفاده از لایبرری سرعت دسترسی به دیتابیس رو کم نمیکنه (در صورتی که دیتابیس ما بسیار حجیم باشه)؟
سلام
استفاده از لایبری تاثیری در سرعت نداره
در هر دو صورت به یک روش ارتباط با دیتابیس برقرار میشه، اما لایبری کار شما رو ساده تر میکنه
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
ای کاش یه ذره این دیتابیس امنیت داشت خیلی از برنامه ها با همین SQLite بازارشون داره خراب میشه یا سوء استفاده میشه
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
با سلام
عکس های شما به صورت بایت توی دیتابیس ذخیره میشه
باید ابتدا عکس رو تبدیل به bitmap کنید و سپس بایت های عکس رو ذخیره کنید
این نمونه کد insert کردن یک عکس با اسم توی جدول
byte[] img = null;
Bitmap b = null; // your image goes here
ByteArrayOutputStream bos = new ByteArrayOutputStream();
b.compress(Bitmap.CompressFormat.PNG, 100, bos);
img = bos.toByteArray();
SQLiteStatement p = mydb.compileStatement("insert into pictures (name, image) values(?, ?)");
p.bindBlob(2, img);
p.bindString(1, "1.jpg");
p.execute();
این هم نمونه کد خواندن
byte[] img = null;
Cursor c = mydb.rawQuery("select * from pictures", null);
if(c.moveToLast()){
img = c.getBlob(2);
}
Bitmap b = BitmapFactory.decodeByteArray(img, 0, img.length);
imgView.setImageBitmap(b);
سلام
ممنون از راهنماییتون. سوال دیگه اینکه من عکس ها رو داخل فولدر drawable قرار بدم یا جای دیگه؟
ممنون.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
Sina.iRoid
سلام
ممنون از راهنماییتون. سوال دیگه اینکه من عکس ها رو داخل فولدر drawable قرار بدم یا جای دیگه؟
ممنون.
الان من متوجه نشدم دقیقا برای چی میخواین عکس ها رو ذخیره کنین توی دیتابیس؟
اگر توی drawable یا جایی دیگه توی برنامه یا گوشی عکس ها رو دارید، دیگه نیازی نیست خود عکس رو ذخیره کنید، کافیه اسم یا آدرسش رو ذخیره کنید
ذخیره توی دیتابیس موقعی به درد میخوره که بخواین از دیتابیس آماده استفاده کنید و نخواین کاربرها با باز کردن APK عکس هاتون رو ببینن
برای این کار هم قبلا باید دیتابیس رو بسازید و توی برنامه قرار بدید
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
الان من متوجه نشدم دقیقا برای چی میخواین عکس ها رو ذخیره کنین توی دیتابیس؟
اگر توی drawable یا جایی دیگه توی برنامه یا گوشی عکس ها رو دارید، دیگه نیازی نیست خود عکس رو ذخیره کنید، کافیه اسم یا آدرسش رو ذخیره کنید
ذخیره توی دیتابیس موقعی به درد میخوره که بخواین از دیتابیس آماده استفاده کنید و نخواین کاربرها با باز کردن APK عکس هاتون رو ببینن
برای این کار هم قبلا باید دیتابیس رو بسازید و توی برنامه قرار بدید
سلام. می خوام یه سری عکس به طور پیش فرض داخل برنامه باشه. اگر کاربر هم خواست عکس های خودشو رو به برنامه اضافه کنه.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام به استاد گرامی این تاپیک
یه برنامه توی بازار گذاشتم که البته با بانک sql از پیش آماده کار میکنه و در ابتدا هیچی توش نیست و کاربر اطلاعات توش ایجاد میکنه(همون قرعه کشی فامیلی) . اما متاسفانه یه کمبودی داره برنامه ام و حالا باید در ورژن بعدی به اون بانک اطلاعاتی یک فیلد جدید اضافه کنم. اگه بانک فقط خواندنی بود میدونم که باید ورژن رو یکی بالا میبردم. اما حالا که هم خاندنی است هم نوشتنی و چون نمیخام اطلاعات احتمالی کاربر پاک بشه ، چکار باید بکنم؟
آیا اصلا شدنی این کار؟ :گریه:
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
alireza142
سلام به استاد گرامی این تاپیک
یه برنامه توی بازار گذاشتم که البته با بانک sql از پیش آماده کار میکنه و در ابتدا هیچی توش نیست و کاربر اطلاعات توش ایجاد میکنه(همون قرعه کشی فامیلی) . اما متاسفانه یه کمبودی داره برنامه ام و حالا باید در ورژن بعدی به اون بانک اطلاعاتی یک فیلد جدید اضافه کنم. اگه بانک فقط خواندنی بود میدونم که باید ورژن رو یکی بالا میبردم. اما حالا که هم خاندنی است هم نوشتنی و چون نمیخام اطلاعات احتمالی کاربر پاک بشه ، چکار باید بکنم؟
آیا اصلا شدنی این کار؟ :گریه:
سلام آقای کوچگانی عزیز
برای آپدیت دیتابیس به صورتی که اطلاعات قبلی تون از بین نره بعله راهکار هست، اصلا یکی از قابلیت های همین لایبری SQLiteAssetHelper همینه
برای اینکار شما باید یه اسکریپت بنویسی و اطلاعاتی که میخوای جا به جا بشه رو مشخص کنی و تغییرات لازم رو بدی
منتهی من چون هنوز نیازی به این مسئله نداشتم اطلاع دقیقی از جزئیات کار ندارم که بتونم راهنمایی تون کنم، نمونه برنامش توی gitHub همون صفحه لایبری هست
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
ممنون. ان شاالله که هر چی زودتر به این مسئله هم نیاز پیدا کنین...:لبخند:
متاسفانه من از sqlite asset helper استفاده نکردم و از همون SQLiteOpenHelper در پروژه ام ستفاده کرده ام...:ناراحت:
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
آقا یه راه برای حل مشکلم به ذهنم رسید . اما قبلش نیازه که اینو بدونم که آیا میشه با کد نویسی و بعد از اینکه دیتابیس آماده در گوشی کاربر قرار داده شد ، در یک اکتیویتی بشه با ساخت یک کوئری یک ستون با نام مشخص به همون بانک sql اضافه کرد . این کارشدنیه آیا ... ؟؟؟
اگه شدنیه ممنون میشم راهنمایی کنید poorman عزیز...
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
یافتم یافتم ..!!
بچه ها من مشکلم رو یه جوری حل کردم. اینجا هم میگم شاید به درد کسی بخوره.
البته با کسب اجازه از آقا poorman عزیز
در نسخه جدید برنامه ، همون بانک sql قبلی ( که البته در برنامه من کاملا خالیه و فقط سرفیلد ها رو شامل میشه) قرار دادم. بعد در یک اکتیویتی معیین ، کد زیر رو از کلاس Helper فراخوانی کردم تا در بانک من یک ستون جدید خالی با عنوان NEW ایجاد کند :
public void insertNewField() {
mydb.execSQL("ALTER TABLE " + tableName + " ADD NEW INTEGER");
}
tableName همون نام جدول است.
NEW نام ستون جدید است.
INTEGER هم نوع فرمت ستون جدید است.
البته این کار رو با SharedPreferences کنترل میکنیم که فقط یه بار انجام بشه.
امیدوارم مفید واقع بشه.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
من یه برنامه نوشتم که یه اسم و شماره رو در دیتا بیس دخیره بکنه وسپس از روی دیتا بیس بخونه و.در تکست ویو نشون بده
ولی اصلا کارنمیکنه نمیدونم چرا
:ناراحت:
لطفا کمکم کنید.
import android.support.v7.app.ActionBarActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
SQLiteDatabase database;
private static String DBNAME="DB";
private static String TABLE="member";
private TextView name1;
private TextView num1;
String NAME;
String NUM;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
database=openOrCreateDatabase(DBNAME,Context.MODE_ PRIVATE,null);
database.execSQL("CREATE TABLE IF NOT EXISTS"+TABLE+"(ID INTEGER PRIMARY KEY,name TEXT,num INTEGER);");
database.execSQL("INSERT INTO"+TABLE+"(name,num) VALUES('ali','0000000')");
Cursor allrows =database.rawQuery("SELECT * FROM"+TABLE,null);
NAME=allrows.getString(1);
NUM=allrows.getString(2);
name1=(TextView) findViewById(R.id.nametxt);
num1=(TextView) findViewById(R.id.phonetxtview);
name1.setText(NAME+"");
num1.setText(NUM+"");
allrows.close();
database.close();