PDA

View Full Version : چطور دستورات دیتابیس را به صورت شرطی به کار ببرم؟



armintirand
یک شنبه 15 بهمن 1391, 01:23 صبح
سلام من توی یک پروژه میخام در صورت اجرای update دیگه insert اجرا نشه و برعکس.
از این کد استفاده کردم به نظرتون درسته؟
if(query.prepare("update mytable number=:number""where drugname=:drugname")){
}else{
query.prepare("insert into mytable (drugname,number,price)""values(:drugname,:number,:price)");
}
query.bindValue(":drugname",Table->item(i,0)->text());
query.bindValue(":number",Table->item(i,1)->text().toInt());
query.bindValue(":price",Table->item(i,2)->text().toInt());
query.exec();

البته درست که نیست و فقط insert اجرا میشه و update‌ کار نمیکنه میشه مشکلشو بگین؟

armintirand
دوشنبه 16 بهمن 1391, 03:57 صبح
با جستجویی که کردم متجه شدم دستور update رو به صورت دیگه بکار میبرن و کدمو تغییر دادم ولی بازم هنوز فقط insert کار میکنه و update کار نمیکنه
for(int i=0;i<Table->rowCount();i++){

if(query.exec(QString("update mytable number= %1 where drugname='%2'").arg(Table->item(i,1)->text().toInt()).arg(Table->item(i,0)->text()))){
}else{
query.prepare("insert into mytable (drugname,number,price)""values(:drugname,:number,:price)");

query.bindValue(":drugname",Table->item(i,0)->text());
query.bindValue(":number",Table->item(i,1)->text().toInt());
query.bindValue(":price",Table->item(i,2)->text().toInt());
query.exec();
qDebug() <<Table->item(i,0)->text();
}
}
مشکل از کجای کدمه؟

alamate_aoal
دوشنبه 16 بهمن 1391, 18:48 عصر
خروجی دستور زیر رو ببین:
qDebug() << query.lastError().text();

مثال های خود کیوت رو نگاه کردی؟

armintirand
دوشنبه 16 بهمن 1391, 22:32 عصر
متاسفانه این دستور شما خروجی به من نشون نداد

alamate_aoal
سه شنبه 17 بهمن 1391, 10:29 صبح
qDebug کار نمیکنه یا ()query.lastError().text ؟

az.heidarzadeh
سه شنبه 17 بهمن 1391, 10:36 صبح
چه كاريه؟ شما حتما ميتوني تشخيص بدي كي ميخواي update بشه و كي insert خودت يه mode‌ بفرست توي sp‌ و اونجا مديريتش كن...

aidinMC
چهارشنبه 18 بهمن 1391, 13:23 عصر
این چه کدیه شما نوشتی؟!؟!
یه نوع بولین تعریف کن مثلا با اسم update و کدو به شکل زیر تغییر بده:



if(update == true){
query.exec("update mytable number=:number""where drugname=:drugname");
query.next();
update = false;
}else{
query.exec("insert into mytable (drugname,number,price)""values(:drugname,:number, :price)");
query.next();
update = true;
}