PDA

View Full Version : کوئری insert در دیتابیس



parniaznet
چهارشنبه 27 اسفند 1393, 21:22 عصر
سلام
وقت همگی بخیر
من یه دیتابیس از پیش آماده دارم با 3 تا تیبل ، ابتدای اجرای برنامه دیتابیس کپی میشه و واسه خوندن یا آپدیت دیتابیس مشکلی ندارم. اما تا حالا insert نکرده بودم چیزی ، الان به کوئری نیاز دارم که مقادیر داده شده رو اینسرت کنه (در تیبل های متفاوت)

ممنون میشم از دوستان اگر یک کوئری مناسب برای من بنویسن



و یک سوال دیگه ، اگه من بخوام تو دیتابیسم فقط یک جدول داشته باشم و وسط برنامه دیتابیس های جدیدی ایجاد کنم امکانش هست؟!با حفظ دیتابیس قبلی البته

کد های کلاس دیتابیس من :

public class database extends SQLiteOpenHelper {

public final String path = "data/data/com.charter.srp/databases/";
public final String Name = "charterdb";
public SQLiteDatabase mydb;
private final Context mycontext;


public database(Context context) {
super(context, "charterdb", 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();
}




public Integer sh_categ(String table,String categ, String field){

Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" where category='"+categ+"' group by "+field, null);
int i = Cursor.getCount();
return i;

}
public String nam_name(String table,String categ, int row){

Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" where category='"+categ+"' group by name", null);
Cursor.moveToPosition(row);
String s = Cursor.getString(2);
return s;

}


public String nam_etelaat(String table, String categ, String name, int field){

Cursor Cursor = mydb.rawQuery("select * from "+table+" where category='"+categ+"' and name='"+name+"'",null);
Cursor.moveToFirst();
String save = Cursor.getString(field);
return save;
}
public String testedb(String table, String email, int field){

Cursor Cursor = mydb.rawQuery("select * from "+table+" where email='"+email+"'",null);
Cursor.moveToFirst();
String save = Cursor.getString(field);
return save;
}

public String namayesh(int row , int field , String table){

android.database.Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table , null);
Cursor.moveToPosition(row);
String str = Cursor.getString(field);
return str;
}

parniaznet
چهارشنبه 27 اسفند 1393, 21:28 عصر
من خودم این کوئری رو نوشتم ولی کار نمیکنه :

public void addUser(String name, String email, String phone, String mobile, String address, String rid, String created_at) {
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put("name", name); // Name
values.put("email", email); // Email
values.put("phone", phone); // phone
values.put("mobile", mobile); // mobile
values.put("address", address); // address
values.put("rid", rid); // Email
values.put("created_at", created_at); // Created At

// Inserting Row
db.insert("rezerv", null, values);
db.close(); // Closing database connection
}

مهدی عباس پور
چهارشنبه 27 اسفند 1393, 22:51 عصر
بله میشه دیتابیس دیگه رو ایجاد کرد

مهدی عباس پور
چهارشنبه 27 اسفند 1393, 22:56 عصر
دیتابیس تو شاید از نوع OPEN_READONLY بازکردی
کد insert رو بزار

مهدی عباس پور
چهارشنبه 27 اسفند 1393, 23:17 عصر
اینم کدش که کار میکنه


String path="data/data/"+getPackageName()+"/databases";

File file=new File(path);
if(!file.exists()){

file.mkdir();

}
String destPath = "/data/data/" + getPackageName() + "/databases/MyDB";

try {

File f = new File(destPath);
if (!f.exists()) {
CopyDB( getBaseContext().getAssets().open("MyDB"),
new FileOutputStream(destPath));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}


SQLiteDatabase db=SQLiteDatabase.openDatabase(destPath, null, SQLiteDatabase.OPEN_READWRITE);

ContentValues values=new ContentValues();
values.put("Name", "Mehdi");
values.put("Email", "Abbaspour@MySite.com");

db.insert("users", null, values);

مهدی عباس پور
چهارشنبه 27 اسفند 1393, 23:21 عصر
اینم عکس از جدول مورد نظر در دیتا بیس

129579