سلا م CRbreeze@ عزیز؛
1. یه تاپیک جدید بزن و مشکلت رو اونجا مطرح کن اینجا مربوط به کار با SQLite با استفاده از کلاس SQLiteAssetHelper هستش.
2. لوگ کت رو بزار که ببینیم چه خطایی میده.
سلا م CRbreeze@ عزیز؛
1. یه تاپیک جدید بزن و مشکلت رو اونجا مطرح کن اینجا مربوط به کار با SQLite با استفاده از کلاس SQLiteAssetHelper هستش.
2. لوگ کت رو بزار که ببینیم چه خطایی میده.
آخه من گفتم یه تاپیک جدید نزنم شاید مشکل ساز بشه
الان درست میکنم...
سلام من تازه اندروید رو شروع کردم الان میخوام با بانک کار کنم تمام پست ها رو خوندم و اجرا کردم اما توی پوشه lib فایل جاوا رو که کپی کردم روش یک علامت قرمز و روی پوشه برنامه هم ضربدر قرمز میاد موقع اجرا هم اصلا هیچ تغییری درyouwave نمیاد انگار نه انگار که اجرا رو زدم من بانکم رو با sqlite expert ایجاد کردم با پسوند db بود توی پوشه asset هم database ساختم و کپی کردم کسی ميدونه باید چکار کنم eclips م 3.4 و sqlite4
ممنون
سلام من طبق
https://barnamenevis.org/showthread.p...2-%D8%A8%D9%87
برای کار با بانک در اندروید یه بانک sqlite ساختم با نام test.db و توی پوشه asset→databases کپی کردم فایل جار هم در lib
این کدها رو هم نوشتم
mydtabase.java
public class MyDatabase extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "test.db";
private static final int DATABASE_VERSION = 3;
public MyDatabase (Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
main.java
public class MainActivity extends ActionBarActivity {
private MyDatabase MyData;
private TextView txt;
private SQLiteDatabase mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyData = new MyDatabase(this);
mydb = MyData.getReadableDatabase();
/*mydb.execSQL("update user set name='dara' where _id=1");*/
Cursor c=mydb.rawQuery("select * from user",null);
if(c.getCount()==0)
{
mydb.execSQL("update user set name='dara' where _id=1");
}
txt=(TextView) findViewById(R.id.textView2);
txt.setText("ok");
}
}
اما موقع اجرا پیغام unfortunately my app has stoped میدهد ممنون میشم راهنماییم کنید مشکل کارم کجاست؟
کسی نیست جواب بده..؟
shabgardetanha@ تنها راهنمایی که میشه کرد اینه که بگیم "متاسفانه برنامه شما متوقف شده است"
اینو کلی بهت میگم تا وقتی که لوگ کت رو نزاری کسی حال و حوصله تست و دیباگ برنامه ت رو نداره.
متن لوگ کت (همون خطوط قرمزی که موقع اجرا برنامه توی اندروید استادیو نمایش داده میشه) رو بزار که متوجه بشیم مشکل کجاست.
موفق باشی
[QUOTE=poorman;1987677]آموزش کار با دیتابیس آماده SQLite برای ساخت یک دیتابیس خارجی و آماده نرم افزار SQLite Database Browser رو پیشنهاد میکنم نمونه کار با دیتابیس آماده و نمایش و آپدیت اطلاعات دیتابیس رو از این پست دریافت کنید ----------------------------------------------------------------------------------------------- بالاخره من دیشب تونستم تمام مشکلات مربوط به دیتابیس آماده رو حل کنم و ارتباط خوبی برقرار کنم با لایبریsqlite asset helper ( با تشکر از hamedjj به خاطر پافشاری روی استفاده از این لایبری ) ولی خب استفاده از این لایبری هم یکم برام گیج کننده بود که خدا رو شکر تونستم آخرش راه بندازمش من یه توضیح میدم واسه کسایی که میخوان با دیتابیس آماده کار کنن و مثل من به مشکل خوردن انصافا استفاده از sqlite asset helper راحته و بسیار کارا یکی از مشکلاتی که من برخورد کردم توی استفاده از کلاس های دیگه، این بود که توی اندروید 10 به پایین دیتابیس رو ایجاد نمیکرد ولی این لایبری مشکل رو حل کرد خب دوستانی که با اکلیپس کار میکنن این فایل jar رو دانلود کنن و توی پروژه مورد نظر در پوشه libs قرار بدن لینک فایل jar توی پوشهassets یک پوشه به اسم databases بسازید بعد دیتابیس خودتون رو zip کنید ( فایل دیتابیس به تنهایی باید پسوند .db داشته باشه ) فایل زیپ شده رو با فرمت اسم ( DataBaseName.db.zip ) توی پوشه databases بذارید. ( دقت کنید باید هم پسوند db هم پسوند zip داشته باشه ) یعنی نمایش فایل زیپ توی ویندوز به صورت DataBaseName.db و نمایش توی اکلیپس به شکل DataBaseName.db.zip باشه بعدش این کلاس رو ایجاد کنینpublic class MyDatabase extends SQLiteAssetHelper { private static final String DATABASE_NAME = "DataBaseName.db"; private static final int DATABASE_VERSION = 1; public MyDatabase (Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); setForcedUpgrade(); } }توی کلاسی که ایجاد کردین اسم دیتابیس خودتون رو با پسوند db وارد کنین بعدش توی اکتیویتی توی متغیرهای عمومی یک نمونه از این کلاس تعریف کنید، به این صورت :java.lang.RuntimeException: Unable to start activity ComponentInfo{com.helper.hjuybar/com.helper.hjuybar.A_bank_activity}: com.readystatesoftware.sqliteasset.SQLiteAssetHelp er$SQLiteAssetException: Missing databases/hjuybar.db file (or .zip, .gz archive) in assets, or target folder not writableprivate MyDatabase MyDataBase;و بعد توی متد onCreate این خط کد رو بنویسین :MyDataBase = new MyDatabase(this);حالا هر جایی که خواستین دیتابیس رو باز کنین، میتونین از دو تا حالت getWritableDatabase() و getReadableDatabase() که برای خوندن و نوشتن هست استفاده کنین به صورت زیر مثلا :mydb = MyDataBase.getReadableDatabase();وقتی getReadableDatabase استفاده میکنید، فقط عملیات خواندن رو میتونید انجام بدید پس برای نوشتن یا آپدیت و دیلت باید از getWritableDatabase استفاده کنید من از این کد استفاده کردم ولی متاسفانه دیتابیسم در مسیر data/data/pack_name/database ایجاد نشد میخاستم بدونم مشکل از کجاست تازه یه اروری هم توی logcat دارم ک میگه فولدرتون توی asset فقط readable و وقتی readable هم میزارم بازم ارور میده
سلام دوستان
یه پروژه رو کسی برام فرستاده ایراداشو برطرف کردم و از SQLiteAssetHelper هم برای وصل شدن به دیتابیس استفاده کردم مشکلی که الان وجود داره اینه که وقتی با 4.1.1 اجرا میگیرم لیست ویو رو مشاهده میکنم ولی در 5.0.0 خطا میده ...
آخرین ویرایش به وسیله AreF.95 : دوشنبه 01 شهریور 1395 در 08:44 صبح
سلام ، دوستان لطفا دیگه مستقیم با خود SQlite کار نکنید ، یا از ORM استفاده کنید ، مثل Sugar , Sprinkles,.... یا از Realm استفاده کنید ، این Realm تازه اومده و انگار سرعتش خیلی بیشتر از SQlite هستش.
سلام به شما و ممنونم از همه عزیزان .
انشالله خدا از شما راضی باشد
من تازه شروع کردم و نمی دونم این راههایی که فرمودین چی هستن و اینکه آیا از هم جدا اند یا اینکه همه خوبsqllite هستن ...؟؟؟
اینکه من باید از کجا شروع کنم ؟
کدوم راه بهتره ؟
یه توضیح مختصر راجع به همه این آموزش ها به صورت کلی می فرمایید .؟
ممنونم
سلام دوستان هرکی میتونه کمکم که دوماهه خداشاهده دارم کلنجار میرم این برنامه درست نمیشه هرکی بتونه کمکم کنه بخدا دستشو از اینجا میبوسم دیگه داره مخم سوت میکشه دیگه شک افتاده بهم که اشکال از برنامه نیست اشکال از اندروید استودیو منه.نمیدونم هرکی میتونه کمک کنه فقط .برنامشم اینه که اطلاعات رو از کاربر میگیره ثبت میکنه تو دیتابیس
این از کلاس مدیریت دیتابیس:
package mehrsoft.com.app3;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DataBaseManagment extends SQLiteOpenHelper {
public DataBaseManagment(Context context) {
super(context, "DbTest", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String Q_CreateTable="CREATE TABLE T_Users ( "+
" UserId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"+
" Name VARCHAR NOT NULL,"+
" Age INT,"+
" Avg REAL);";
db.execSQL(Q_CreateTable);
db.close();
}
public boolean AddUser(User u)
{
try{
SQLiteDatabase db=this.getWritableDatabase();
String Q1="Insert INTO T_Users(Name,Age,Avg)Values('"+u.Name+"',"+u.Age+","+u.Avg+")";
db.execSQL(Q1);
db.close();
return true;
}
catch(Exception ex)
{
return false;
}
}
public User GetUser(int id)
{
User k=new User();
SQLiteDatabase db=this.getReadableDatabase();
String Q1="Select * From T_Users where UserId="+id;
Cursor C1=db.rawQuery(Q1,null);
if(C1.moveToFirst()==true)
{
k.Id=C1.getInt(0);
k.Name=C1.getString(1);
k.Age=C1.getInt(2);
k.Avg=C1.getDouble(3);
}
return k;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
این از کلاس مدل :
package mehrsoft.com.app3;
public class User {
public int Id;
public String Name;
public int Age;
public double Avg;
ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــ
اینم از Main activity:
package mehrsoft.com.app3;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button btnregister;
Button btnsearch;
EditText edtname;
EditText edtid;
EditText edtage;
EditText edtsearch;
TextView txt1;
DataBaseManagment db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnregister = (Button) findViewById(R.id.btnregister);
btnsearch = (Button) findViewById(R.id.btnsearch);
edtname = (EditText) findViewById(R.id.edtname);
edtid = (EditText) findViewById(R.id.edtid);
edtage = (EditText) findViewById(R.id.edtage);
edtsearch = (EditText) findViewById(R.id.edtsearch);
txt1 = (TextView) findViewById(R.id.txt1);
btnregister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db=new DataBaseManagment(MainActivity.this);
User u=new User();
u.Name=edtname.getText().toString();
u.Age=Integer.parseInt(edtage.getText().toString());
u.Avg=Double.parseDouble(edtid.getText().toString());
boolean f= db.AddUser(u);
if (f==true){
Toast.makeText(MainActivity.this,"sabt shod",Toast.LENGTH_LONG).show();;
}
else {
Toast.makeText(MainActivity.this,"erororor",Toast.LENGTH_LONG).show();;
}
}
});
btnsearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int id=Integer.parseInt(edtid.getText().toString());
User u=db.GetUser(id);
if (u.Id!=0){
txt1.setText(u.Age+" "+u.Avg+""+u.Name);
}
else {
Toast.makeText(MainActivity.this,"پیدا نشد",Toast.LENGTH_LONG).show();
txt1.setText("");
}
}
});
}
}
آخرین ویرایش به وسیله i love programer : دوشنبه 30 اسفند 1395 در 23:25 عصر
در ضمن بگم هیچ اروری نداره موقع اجرا فقط ثبت نمیکنه اطلاعات رو
من یه سایت پیدا کردم اموزش کامل Sqlite داره بصورت رایگان . گفتم به اشتراک بزارم شاید برای دوستان مفید باشه
http://mehrtash-souri.com/article/6/...2%D8%B4-SQLite
سلام
یه برنامه میخام بنویسم که یه دیتابیس داشته باشم و دریافت و پرداخت های چند نفر رو بتونم توش ذخیره کنم
تعداد نفرات ممکته کم یا زیاد بشه
ستون های دیتابیس :
نام فرد - مبلغ دریافتی - مبلغ پرداختی - تاریخ
حالا سوال اینجاست برای ذخیره کردن کلیه تراکنش های یه نفر از ستون های همین دیتابیس استفاده کنم ؟ یا برای هر نفر یه دیتابیس جدا ؟ یا چی ؟ به طوری که بتونم گزارش کامل از تراکنش ها داشته باشم ؟
مثلا فرض کنید نفر اول اسمش علی هست و در ده تا تاریخ مختلف مبالغی برداشت و پرداخت کرده
میخام طوری باشه که هر وقت علی پول پرداخت یا دریافت کرد این تاریخ و مبلغ رو یه جا ذخیره کنم . حالا کجا باید ذخیره بشه ؟
..............
یا مثلا تو این برنامه های مدیریت دخل و خرج ، مثلا هزینه هایی که برای بنزین قراره ثبت بشه (به همراه تاریخش ) به چه صورت و در چه متغیرهایی ذخیره میشه ؟
آخرین ویرایش به وسیله hamidchi : چهارشنبه 06 اردیبهشت 1396 در 20:48 عصر
من با این کد :
mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
mydb.execSQL("INSERT INTO " + TABLE + "(NAME, PLACE) VALUES('یک دو سه','امتحان')");
یه جدول ساختم ولی نمیتونم اطلاعات واردش کنم ......
میشه سایتم را ببینید
دوستان یه سوال! با نرم افزار DB Browser یه دیتابیس ساختم، هیچ مشکلی هم نداره در برنامه. حالا دیتابیس رو از همون DB Browser رمزگذاری کردم، توی برنامه اصلی باید چه کدی بنویسم که رمز رو بهش نشون بدم؟ در واقع چطوری از دیتابیس خارجی رمزدار استفاده کنم؟
آخرین ویرایش به وسیله opinions : یک شنبه 05 شهریور 1396 در 11:35 صبح دلیل: ایراد جمله بندی