PDA

View Full Version : نوشتن کوئری همراه با یه سری متغییر داخل یک اکتیویتی و ذخیره اون به عنوان یک string.مشکل '' , '



mehrdad85
جمعه 24 خرداد 1398, 02:18 صبح
سلام
وقت همگی بخیر

دوستان چطور میتونیم داخل یک اکتیویتی یک کوئری بنویسیم اونو به عنوان یه string ذخیره کنیم . اکتیویتی که مینویسیم داخلش یه سری متغییر هستش و من توی گذاشتن " ' مشکل دارم و هرکاری میکنم نه تو این مورد بلکه کلا منطق و روال کار را نمیدونم.
بزارید یه مثال بزنم چون نمیدونم متوجه منظورم شدید یا نه
مثلا من از select میخوام بزنم که اسم جدول یه متغییر هستش و در بخش where clause هم یه متغییر دارم.

ممنون از کمک و راهنمایی همگی



ارادتمند

farhad_shiri_ex
جمعه 24 خرداد 1398, 11:47 صبح
سلام
وقت همگی بخیر

دوستان چطور میتونیم داخل یک اکتیویتی یک کوئری بنویسیم اونو به عنوان یه string ذخیره کنیم . اکتیویتی که مینویسیم داخلش یه سری متغییر هستش و من توی گذاشتن " ' مشکل دارم و هرکاری میکنم نه تو این مورد بلکه کلا منطق و روال کار را نمیدونم.
بزارید یه مثال بزنم چون نمیدونم متوجه منظورم شدید یا نه
مثلا من از select میخوام بزنم که اسم جدول یه متغییر هستش و در بخش where clause هم یه متغییر دارم.

ممنون از کمک و راهنمایی همگی



ارادتمند
در تابع query که در کلاس SqliteDataBase خود اندروید دراین تابع یکی از پارامتر ها به نام selection که به صورت string هست جهت درج شرط کوئری کاربرد دارد ویک پارامتر هم به نام selectionArgs که به صورت یک آرایه sting هست می توانید مقادیر لازم برای شرطها که در زمان اجرا معتبر هستند را به کوئری پای بدید به همین راحتی ...


String tblName = "yourTable";
String[] columns = new String(){"name","id"};
String selection = "name = ? and id = ?";
String[] selectargs = new String(){"ali","1"};

SQLiteDataBase.query(false , tblName , columns , selection ,selectargs ,null , null , null , null , null);

farhad_shiri_ex
جمعه 24 خرداد 1398, 11:47 صبح
سلام
وقت همگی بخیر

دوستان چطور میتونیم داخل یک اکتیویتی یک کوئری بنویسیم اونو به عنوان یه string ذخیره کنیم . اکتیویتی که مینویسیم داخلش یه سری متغییر هستش و من توی گذاشتن " ' مشکل دارم و هرکاری میکنم نه تو این مورد بلکه کلا منطق و روال کار را نمیدونم.
بزارید یه مثال بزنم چون نمیدونم متوجه منظورم شدید یا نه
مثلا من از select میخوام بزنم که اسم جدول یه متغییر هستش و در بخش where clause هم یه متغییر دارم.

ممنون از کمک و راهنمایی همگی



ارادتمند
در تابع query که در کلاس SqliteDataBase خود اندروید دراین تابع یکی از پارامتر ها به نام selection که به صورت string هست جهت درج شرط کوئری کاربرد دارد ویک پارامتر هم به نام selectionArgs که به صورت یک آرایه sting هست می توانید مقادیر لازم برای شرطها که در زمان اجرا معتبر هستند را به کوئری پاس بدید به همین راحتی ...


String tblName = "yourTable";
String[] columns = new String(){"name","id"};
String selection = "name = ? and id = ?";
String[] selectargs = new String(){"ali","1"};

SQLiteDataBase.query(false , tblName , columns , selection ,selectargs ,null , null , null , null , null);

mehrdad85
جمعه 24 خرداد 1398, 12:00 عصر
سلام دوست عزیز.
ممنونم از راهنماییت و وقتی که برای پاسخگویی گذاشتی.
اگه بخوام اونو به صورت string صرف و بدون بکارگیری پارامترها استفاده کنم باید چکار کنم؟میخوام منطق گذاشتن '' '' , ' ' را بدونم.


بازهم سپاسگزارم
ممنون از همه دوستان که بدون چشمداشت کمک میکنن و کار بقیه را راه میندازن

farhad_shiri_ex
جمعه 24 خرداد 1398, 18:01 عصر
سلام دوست عزیز.
ممنونم از راهنماییت و وقتی که برای پاسخگویی گذاشتی.
اگه بخوام اونو به صورت string صرف و بدون بکارگیری پارامترها استفاده کنم باید چکار کنم؟میخوام منطق گذاشتن '' '' , ' ' را بدونم.


بازهم سپاسگزارم
ممنون از همه دوستان که بدون چشمداشت کمک میکنن و کار بقیه را راه میندازن

دوست عزیز همانطور که شما در پست اول گفتید برای اضافه کردن مقادیر داینامیک در زمان اجرا یا باید از توابع query ویا rawQuery استفاده کنید.
حالا منظور تون از منطق "" و '' چی ؟
روش استفاده از rawQuery

String query = "select name , id from table where name = ? and id = ? ";
String[] selectargs = new String(){"ali","1"};
SQLiteDataBase.rawQuery(query ,selectargs);

farhad_shiri_ex
جمعه 24 خرداد 1398, 18:04 عصر
سلام دوست عزیز.
ممنونم از راهنماییت و وقتی که برای پاسخگویی گذاشتی.
اگه بخوام اونو به صورت string صرف و بدون بکارگیری پارامترها استفاده کنم باید چکار کنم؟میخوام منطق گذاشتن '' '' , ' ' را بدونم.


بازهم سپاسگزارم
ممنون از همه دوستان که بدون چشمداشت کمک میکنن و کار بقیه را راه میندازن

دوست عزیز همانطور که شما در پست اول گفتید برای اضافه کردن مقادیر داینامیک در زمان اجرا یا باید از توابع query ویا rawQuery استفاده کنید.
حالا منظور تون از منطق "" و '' چی ؟
روش استفاده از rawQuery

String query = "select name , id from table where name = ? and id = ? ";
String[] selectargs = new String(){"ali","1"};
SQLiteDataBase.rawQuery(query ,selectargs);

البته می توانید اینطوری هم استفاده کنید ولی قطعا خوب نیست!

String name = "ali" , id = "1";
String query = "select name , id from table where name = "+name+" and id = " + id ;
SQLiteDataBase.rawQuery(query ,null);

mehrdad85
سه شنبه 28 خرداد 1398, 15:53 عصر
دوست عزیز همانطور که شما در پست اول گفتید برای اضافه کردن مقادیر داینامیک در زمان اجرا یا باید از توابع query ویا rawQuery استفاده کنید.
حالا منظور تون از منطق "" و '' چی ؟
روش استفاده از rawQuery

String query = "select name , id from table where name = ? and id = ? ";
String[] selectargs = new String(){"ali","1"};
SQLiteDataBase.rawQuery(query ,selectargs);

البته می توانید اینطوری هم استفاده کنید ولی قطعا خوب نیست!

String name = "ali" , id = "1";
String query = "select name , id from table where name = "+name+" and id = " + id ;
SQLiteDataBase.rawQuery(query ,null);




سلام
ممنونم از راهنمایی و پاسخت دوست عزیز.بسیار درست و منطقی
اما اگر من به فرم دوم بنویسم کوئری را با خطلایی با این مضمون مواجه میشم.کسی علت را میدونه؟
android.database.sqlite.SQLiteException : no such column "while compiling " select....
در حالیکه اصلا من همچین ستونی تعریف نکردم و اون فقط یه پارامتر هستش و همین.پ
بزارید یه مثال بزنم

یه جدول که ستون های name, family,age دارم
حالا یه کوئری به این شکل مینویسم
"String s="SELECT age,family FROM person WHERE name="ali
حلاا اروری که میده
no such column: ali( code 1) : , while compiling SELECT age,family FROM person WHERE name= ali

پیشاپیش از همه دوستان ممنونم



مرسی

farhad_shiri_ex
چهارشنبه 29 خرداد 1398, 09:03 صبح
سلام
ممنونم از راهنمایی و پاسخت دوست عزیز.بسیار درست و منطقی
اما اگر من به فرم دوم بنویسم کوئری را با خطلایی با این مضمون مواجه میشم.کسی علت را میدونه؟
android.database.sqlite.SQLiteException : no such column "while compiling " select....
در حالیکه اصلا من همچین ستونی تعریف نکردم و اون فقط یه پارامتر هستش و همین.پ
بزارید یه مثال بزنم

یه جدول که ستون های name, family,age دارم
حالا یه کوئری به این شکل مینویسم
"String s="SELECT age,family FROM person WHERE name="ali
حلاا اروری که میده
no such column: ali( code 1) : , while compiling SELECT age,family FROM person WHERE name= ali

پیشاپیش از همه دوستان ممنونم



مرسی

لطفا اون بخش از سورس کد که همین کوئری نوشتید اینجا قرار بدید در تگ های مناسب هم کدتون قرار بدید!

Nevercom
چهارشنبه 29 خرداد 1398, 21:22 عصر
اول اینکه اگه لازمه از rawQuery استفاده کنید، بهتر هست از روش اولی که دوستمون اشاره کردن (که از علامت ? استفاده شده توش) استفاده کنید.

ولی در نوشتن SQL حواستون باشه که String رو بین Quotation Mark ( ' ) قرار بدید و البته کاراکتر ( ` ) معنای خاصی داره، وقتی چیزی رو بین این کاراکتر قرار می‌دید معنی این هست که یک فیلد یا Table هست.

خطایی که دریافت می‌کنید اشاره می‌کنه که فیلدی تحت نام ali وجود نداره، که یا این رشته رو بین ' قرار ندادید، و یا به اشتباه بین کاراکتر ` قرار داده شده.