完美解决SQLite读写_控制台输出_界面显示中文问题
我的环境是Qt 4.1,直接使用QString的话,无论界面还是数据库读写都是乱码,终于在网路上面搜索到了解决方法,并编写了例子,可能不完善,大家一起研究吧。源码如下:
- #include <QtGui/QApplication>
- #include <QMessageBox>
- #include <QSqlDatabase>
- #include <QSqlError>
- #include <QSqlQuery>
- #include <QVariant>
- #include <QtDebug>
- #include <QString>
- #include <QTextCodec>
- #include <QListWidget>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
- db.setDatabaseName("e:\\db.db");
- 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,
- QMessageBox::NoButton);
- return false;
- }
- QSqlQuery rs(db);
- rs.exec("create table person(name text,age integer)");
- rs.exec("delete from person where age=119");
- QString strSql("insert into person(name,age) values('中国是在亚洲',119)");
- rs.exec(strSql);
- bool blnOpen=rs.exec("select * from person");
- if (blnOpen==false)
- {
- qDebug("Query database error\n");
- return -1;
- }
- QListWidget *window=new QListWidget();
- while (rs.next()) {
- int age= rs.value(1).toInt();
- QString name=rs.value(0).toString();
- window->addItem(name);
- }
- QString test="这是测试窗体";
- qDebug("字符串的长度是:%d",test.length());
- window->setWindowTitle(test);
- window->show();
- return a.exec();
- }
复制代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我用utf8,都能正常顯示。