直接上代码
- #include "dbpoi.h"
- #include <QtGui/QApplication>
- #include <QtCore/QCoreApplication>
- #include <QSqlDatabase>
- #include <QSqlQuery>
- #include <QSqlError>
- #include <QSqlDriver>
- #include <qDebug>
- #include <QString>
- #include <QVector>
- #include <QList>
- #include <QFile>
- #include <QSet>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- //dbPOI w;
- //QCoreApplication a(argc, argv);
- // QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));
- QVector<int> tempFromNode;
- QVector<int> tempToNode;
- QSet <int> tempSort;
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
- db.setDatabaseName("NEW_AR_POI.sqlite"); // 数据库名与路径, 此时是放在同目录下
- // db.setDatabaseName("offset.db"); // 数据库名与路径, 此时是放在同目录下
- bool ok = db.open(); // 连接数据库, 然后就可以使用了.
- if(ok){
- QSqlQuery query;
- if (query.exec("select * from LinkNode_Table_bark ")) //尝试列出 表的所有记录
- { //本次查询成功
- int numRows = 0; //询问数据库驱动,是否驱动含有某种特性
- if (db.driver()->hasFeature(QSqlDriver::QuerySize))
- {
- numRows = query.size(); //如果支持结果影响的行数,那么直接记录下来
- }
- else
- {
- query.last(); //否则定位到结果最后,qt 文档说,这个方法非常慢
- numRows = query.at() + 1;
- query.seek(-1);
- }
- }
- //尝试列出 表的所有记录
- while (query.next()) {
- int num =0;
- /*QString FNode_ID = query.value(4).toString();
- QString TNode_ID = query.value(5).toString();*/
- int FNode_ID = query.value(3).toInt();
- int TNode_ID = query.value(4).toInt();
- tempFromNode.append(FNode_ID);
- tempToNode.append(TNode_ID);
- }
- }
- else{
- //qDebug() << "cannot open database.";
- printf( "cannot open database.");
- }
- QFile file( "file.txt" );
- if ( file.open(QIODevice::WriteOnly | QIODevice::Text)) {
- QTextStream stream( &file );
- for ( int index =0; index < tempFromNode.size(); index ++ ){
- stream << tempFromNode.at(index);
- tempSort.insert(tempFromNode.at(index));
- tempSort.insert(tempToNode.at(index));
- stream<<"\t"<< tempToNode.at(index) <<endl ;
- }
- file.close();
- }
- // qSort(tempSort.begin(),tempSort.end());
- //tempSort.unite(tempSort);
- QFile filetTempSort( "tempSort.txt" );
- if ( filetTempSort.open(QIODevice::WriteOnly | QIODevice::Text)) {
- QTextStream stream( &filetTempSort );
- foreach (const int &value, tempSort)
- {
- stream << value<<endl;
- filetTempSort.close();
- }
- }
- QFile fileTp( "TP.txt" );
- if ( fileTp.open(QIODevice::WriteOnly | QIODevice::Text)) {
- QTextStream stream( &fileTp);
- foreach (const int &value, tempSort)
- {
- stream << value;
- for ( int index =0; index < tempFromNode.size(); index ++ ){
- if (tempFromNode.at(index) == value)
- stream << "\t"<<tempToNode.at(index);
- }
- for ( int index =0; index < tempFromNode.size(); index ++ ){
- if (tempToNode.at(index) == value)
- stream << "\t"<<tempFromNode.at(index);
- }
- stream << endl;
- }
- fileTp.close();
- }
- //w.show();
- //return a.exec();
- return 0;
- }
http://blog.csdn.net/swqqcs/article/details/7677781