# Native Code > برنامه نویسی با C > برنامه نویسی در محیط QT و هم خانواده هایش > حرفه ای: چند مشکل در مورد کیوت

## armintirand

سلام
اول اینکه تو برنامه هایی که از دیتابیس استفاده میکنیم کیوت ارور میگیره ، مثل اینکه دیتابیس نصب نیست چطوری دیتابیس کیوت رو نصب کنیم؟
دوم اینکه اگه ما یه فایل مثلا با فرمت .z داریم چطور میتونیم برنامه ای بنویسیم که اونو بتونه باز کنه؟چون من تومثالهای یک کتاب یه برنامه صفحه گسترده میساخت و با فرمت  .sp ذخیره میکرد که مثلا با text editor باز نمیشد میخاستم بدونم یه فایل ناشناس رو چطور میتونیم باز کنیم؟
فعلا همینا رو یادبگیرم تا بعدیها رو بپرسم.
ممنون

----------


## rosenth

پلاگین های دیتابیس Qt هنگام اجرای برنامه باید لود بشن.فایل پلاگین دیتابیسی که ازش استفاده میکنی رو توی مسیر پروژه ت کپی کن. برای لود پلاگین میتونی از دستور زیر استفاده کنی:

QCoreApplication::addLibraryPath ( "path of plugin" )

----------


## armintirand

دوست عزیز یعنی من که sdk کیوت رو نصب کردم دیتابیس ها رو هم دارم؟
به سوال دومم جواب ندادید؟
میشه یه نمونه پروژه بسیار کوچیک از دیتابیس برام بذارید تا نحوه کارو بهتر بدونم؟
ممنون

----------


## rosenth

دیتابیس sqlite نیاز به نصب نداره. دیتابیس mysql باید نصب بشه. در هردوحالت،Qt برای ارتباط با این بانک ها از یک سری پلاگین هایی که توی مسیرنصب Qt هستند استفاده میکنه.مثلا Qt/plugins/sqldrivers
 تابع اتصال به دیتابیس :

void MainWindow::createConnection()
{
 db= QSqlDatabase::addDatabase("QSQLITE");
    QString MainPath=QDir::currentPath();
    MainPath.append(QDir::separator()).append("databas  e").append(QDir::separator()).append("yeganeh.sqli  te");
     MainPath = QDir::toNativeSeparators(MainPath);
    db.setDatabaseName(MainPath);
    if (!db.open()) {
             QMessageBox::critical(0, qApp->tr("Cannot open database"),
                 qApp->tr("Unable to establish a database connection.\n"
                          "This example needs SQLite support. Please read "
                          "the Qt SQL driver documentation for information how "
                          "to build it.\n\n"
                          "Click Cancel to exit."), QMessageBox::Cancel);

         }
}


ولی یکبار فراخوانی این تابع کافیه تا در بقیه فرم های برنامه هم به دیتابیس متصل باشی، مگه اینکه دیتابیس رو عوض کنی. یعنی در دستورات زیر لازم نیست حتما شی db رو به query ارسال کنید.

QSqlQuery query;
       if(! query.exec("DELETE FROM person WHERE ID="+ID))
        QMessageBox::warning(this,"error",query.lastError(  ).databaseText());
    else
        QMessageBox::information(this,"Removed","",QMessag  eBox::Ok);

---
فایل ناشناس رو که نمیشه به راحتی خوند. باید با فرمتی که خودت تعیین کردی ازش استفاده کنی. بگو دقیقا با فایل میخوای چکار کنی.

----------


## .:saeed:.

سلام 
در مورد سوال دومت یکم بیشتر بگم که باید همون طور که دوستمون گفت فرمت و نحوه ذخیره سازی رو بدست بیاری که در مورد فایل های معروف تو اینترنت می تونی پیدا کنی . مثلا برای خوندن فایل های .ai که یه نوع فایل وکتوره که تو گرفیک کامپیوتری کاربرد داره من یه متن 150 صحفه ای برا خوندنش از adobe گرفتم . اما مثلا فایلی مثلا با پسوند ota که همون تصاویر معروف sms هستند با یک صفحه که در wikipedia هستش قابل خوندن و نوشتن هستند. در مورد سوال اولت هم اگه مشکل دیگری داری در خدمتم.
فعلا :لبخند:

----------


## armintirand

دوستان ممنون از راهنماییتون.بذارید کمی واضحترجلوبریم برای مثالی که گذاشتید اگه ممکنه 1 پروژه که شامل فایل های cpp و هدر و pro و در حد خیلی ساده با همون sqlite که درایور نمیخواد برام بذارید.
درمورد سوال دوم فرض کنید یه مجموعه آفیس نوشتیم که برای خودش فرمتهای خاصی داره حالامیخواهیم مثلا توی word فرمت doc  ماکروسافت رو هم بازکنیم و ویرایش کنیم یا یک نرم افزار تو مایه های  فوتوشاپ نوشتیم و میخواهیم فرمت psd فوتوشاپ رو باز کنیم یا ویرایش کنیم و اگه شرکت مورد نظر در مورد فایلش اطلاعاتی نده چی میشه کرد .لطفا در مورد این دو فرمت توضیحاتی که شرکت های مورد نظر اگه دادن برای باز کردنشون تو برناممون توضیح بدید.
ممنون

----------


## armintirand

ببینید بعضی چیزا هست که براش برنامه ای موجو نیست مثلا تو لینوکس برنامه ای برای پخش فرمت amr نیست و اگه بخواییم براش یک کودک بنویسیم یا یک برنامه که پخشش کنه باید سماق بمکیم یا راهی هست؟
لطفا مثال برای sqlite هم فراموش نشه.

----------


## rosenth

این کار برنامه نویسان حرفه ای هست که مثلا پخش کننده amr بنویسن و البته توی این زمینه هم کوتاهی نکردن و هر برنامه ای که فکرشو بکنی واسه لینوکس نوشتن. ولی انگاربا سرچ کردن زیاد حال نمیکنی رفیق D:
http://ubuntu-ky.ubuntuforums.org/sh....php?p=7295228
برای sqlite ،این برنامه رو با Qt creator باز کن : http://forum.ubuntu.ir/index.php/topic,13824.0.html

----------


## armintirand

ممنون از لينك هايي كه داديد مثال Qsqlite  رو بررسي ميكنم و اگه مشكلي داشتم ميپرسم ولي مشكل amr  يا psd  نيست مشكل من اينه كه يكي يه فرمت براي برنامش ساخته و هيچ اطلاعي درباره اون نداده حالا من ميخوام تو برنامه خودم از اون استفاده كنم راه كار چيه؟ فكر كنيد چيزي كه اپن سورس نيست رو ميخواييم اپن سورس كنيم!!!!!!!!!!!!!!!!!!!!!!!!البته شوخي بود چوت كپي رايتو اين حرفا!! ولي بالاخره بايد بتونيم مثلا اسممونو ميخواييم بذاريم برنامه نويس.

----------


## .:saeed:.

سلام
به نظر عقل ناقص بنده هیچ راه دیگه ای وجود نداره ، اگه فایل خیلی مهم و شناخته شده باشه و یا از یک شرکت معتبر به احتمال خیلی زیاد شما می تونیدبا جستجو راه حل خوندن و نوشتنشو بدست بیارین.اما اگه نباشه من یکی که می گم نمیشه چون اصلا نمیتونم راه حلی براش تصور کنم ، من چطور میتونم فرمتی که به ذهن شما رسیده ( اگه هم که فایل مهم باشه دیگه بدتر ) رو حدس بزنم.این نظر من بود ، بقیه هم خوشحال میشیم این فروم یخ زده Qt رو فعال کنن.
من یکی که تا حالا به این مشکل برنخوردم اگه که فایل معروف باشه قابل یافتنه .
مثلا من فایلهای ota, ai, eps, doc رو Format specification رو پیدا کردم که از قضا برای فایلهای معتبری مثل doc, ai , eps تعداد صفحات توضیحات در مورد فرمت بیش از 100 صفحه است ، حالا شما چطور یه راه حلی می خوای که این دویست صفحه ( مثلا برای doc ) رو حدس بزنه من که راه حلی به ذهنم نمیرسه! :متفکر:

----------


## armintirand

در مورد فرمت دارم چند تا برنامه مینویسم وقتی لازمم شد حتما ازتون راهنمایی میگیرم.
در مورد دیتابیس qsqlite  قبلا اون برنامه رو تو لینوکس اوبونتو تست زده بودم و درست کار میکرد ولی ایندفعه که تو ویندوز تست زدم به دیتابیس ارور داد.
الان دارم یه ماشین حساب مینویسم دارم از لیست پیوندی توش استفاده میکنم ولی ظاهرا لیست پیوندی تو کیوت مشکل داره یا تستش کردید؟؟؟؟؟

----------


## armintirand

من این تاپیک رو تا یادگیری کامل کیوت ادامه میدم به شرط اینکه دوستان هم کمک کنن.
به نظر شما من کدوم دیتابیس رو یاد بگیرم و آیا برای کار با دیتابیس تو کیوت لازمه که خود اون دیتابیس رو هم بلد باشم؟مثلا من همین دیتابیس Qsqlite رو بلد نیستم.

----------


## .:saeed:.

با سلام به شما دوست عزیز . 
تا اونجایی که من کار کردم و میدونم دیتا بیس ها از یک زبان به نام SQL استفاده می کنند ، خوب اگه شما مثلا کار با Mysql که بیشتر رواج داره رو یاد بگیری مشکلی برا کار با sqlite نداری :
SQL is a standard language for accessing databases.
With Sql You can manipulate data in :
MySQL, SQL Server, Access, Oracle, Sybase, DB2, and other database systems.
، پس بهتری بری سر یادگیری Sql که اینجا نقطه خوبیه برا شروع . دستور های پر کاربرد معمولا بین دیتابیس ها یکسانه ولی ممکنه یه سیستم مدیریت دیتا بیس دستورات دیگری هم به sql خودش اضافه کنه . اما اصل یکیه.در ضمن چند تا دستور پر کاربرد بیشتر نیست که شما برای اکثر برنامه ها به اونا نیاز داری.
برا راه افتادن در دیتابیس و مدیریت اون هم توصیه میکنم phpMyAdmin رو کامپیوترت داشته باشی . این برنامه میاد تمام دیتابیس های شما در Mysql و تمام جدول های درون آنها و فیلد های اونارو به صورت فایل های html براتون نمایش میده ، میتونید جدول اضافه کنید ، دیتابیس اضافه کنید ، رکورد اضافه کنید ، query بنویسید و ... . فکر کنم برا sqlite هم باید باشه نمی دونم.
موفق باشین

----------


## armintirand

دوست عزیز من این برنامه شیر رو قبلا تو اوبونتو تست کرده بودم ولی تو ویندوز کار نمیکنه یعنی کامپایل شد ولی در اجرا به دیتابیس ارور میداد؟
یک سوال دیگه اینکه آیا میشه تو کیوت میشه از لیست پیوندی استفاده کرد؟

----------


## armintirand

سلام دوستان متاسفانه بازم این تاپیک خوابید ولی من همچنان ادامه خواهم داد.
میشه بگید برای یادگیری دیتابیس که بتونم تو کیوت ازش استفاده کنم چه کتابی مناسبه؟
لطفا جواب سوالهای قبلیم رو هم بدید.
یک پیشنهاد هم دارم البته به موقع خودم عملی میکنم یک بخش برای کسانی که مثل من میخوان با فایلهای مختلف کار کنن باز کنیم و اطلاعاتی که در مورد سایت موجوده رو انجا قرار بدیم تا مرجعی برای این کار باشه ولی نمیدونم تاپیکش مربوط به کدوم بخش میشه؟
ممنون

----------


## rosenth

لیست پیوندی دوطرفه = QList
برای مقایسه کاربرد انواع لیست ها ،لطفا به مستندات کیوت مراجعه کنید.
***
خطای دیتابیس احتمالا واسه اینه که توی مسیردیباگ برنامه، فایل دیتابیس رو کپی نکردین
***
 برای یادگیری دیتابیس، به مثال های شیرین SDK Qt مراجعه کنید.

----------

