tableColumns
null
হিসাবে সমস্ত কলামের জন্য SELECT * FROM ...
new String[] { "column1", "column2", ... }
নির্দিষ্ট কলামগুলির জন্য যেমন SELECT column1, column2 FROM ...
- আপনি এখানে জটিল ভাব প্রকাশ করতে পারেন:
new String[] { "(SELECT max(column1) FROM table1) AS max" }
আপনাকে max
সর্বাধিক মান ধারণ করে একটি কলাম দেবেcolumn1
whereClause
WHERE
যে কীওয়ার্ড ছাড়াই আপনি যে অংশটি রেখেছেন তা যেমন"column1 > 5"
?
গতিশীল জিনিসগুলির জন্য অন্তর্ভুক্ত করা উচিত , যেমন "column1=?"
-> দেখুনwhereArgs
whereArgs
- বিষয়বস্তু প্রতিটি পূরণ উল্লেখ
?
মধ্যে whereClause
ক্রমে দেখানো মধ্যে
অন্যরা
- ঠিক
whereClause
শব্দ পরে বা বিবৃতি null
যদি আপনি এটি ব্যবহার করবেন না।
উদাহরণ
String[] tableColumns = new String[] {
"column1",
"(SELECT max(column1) FROM table2) AS max"
};
String whereClause = "column1 = ? OR column1 = ?";
String[] whereArgs = new String[] {
"value1",
"value2"
};
String orderBy = "column1";
Cursor c = sqLiteDatabase.query("table1", tableColumns, whereClause, whereArgs,
null, null, orderBy);
// since we have a named column we can do
int idx = c.getColumnIndex("max");
নিম্নলিখিত কাঁচা কোয়েরির সমতুল্য
String queryString =
"SELECT column1, (SELECT max(column1) FROM table1) AS max FROM table1 " +
"WHERE column1 = ? OR column1 = ? ORDER BY column1";
sqLiteDatabase.rawQuery(queryString, whereArgs);
যেখানে / বাইন্ড -আরগস সংস্করণটি ব্যবহার করে আপনি স্বয়ংক্রিয়ভাবে মূল্যগুলি পালিয়ে যান এবং ইনপুট-ডেটা রয়েছে কিনা তা আপনার চিন্তা করার দরকার নেই '
।
অনিরাপদ: String whereClause = "column1='" + value + "'";
নিরাপদ:String whereClause = "column1=?";
কারণ মানটিতে যদি '
আপনার বিবৃতি থাকে তবে তা ভঙ্গ হয় এবং আপনি ব্যতিক্রম পান বা অনিচ্ছাকৃত জিনিসগুলি করেন, উদাহরণস্বরূপ value = "XYZ'; DROP TABLE table1;--"
এমনকি আপনার টেবিলটি এমনকি ড্রপ হতে পারে যেহেতু বিবৃতিটি দুটি বিবৃতি এবং একটি মন্তব্য হয়ে যাবে:
SELECT * FROM table1 where column1='XYZ'; DROP TABLE table1;--'
আরগস সংস্করণটি ব্যবহার করে XYZ'; DROP TABLE table1;--
পালাতে হবে 'XYZ''; DROP TABLE table1;--'
এবং কেবলমাত্র একটি মান হিসাবে বিবেচিত হবে। এমনকি '
খারাপ কাজ করার উদ্দেশ্য না থাকলেও এটি এখনও সাধারণ বিষয় যে এটি লোকেরা তাদের নামে রয়েছে বা এটি পাঠ্য, ফাইলের নাম, পাসওয়ার্ড ইত্যাদিতে ব্যবহার করেন তাই সর্বদা আরগস সংস্করণটি ব্যবহার করুন। ( int
সরাসরি whereClause
যদিও এর মধ্যে অন্যান্য আদিমগুলি তৈরি করা ঠিক আছে )