#include <QtCore>
#include <QtGui>
#include <QtSql>
#include "widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));
QTextEdit display;
display.resize(400, 160);
display.show();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("example");
db.setUserName("root");
db.setPassword("root");
db.exec("SET NAMES 'UTF8'");
bool ok = db.open();
if (ok) {
QSqlQuery query;
query.prepare("insert into employee values(:id, :lname, :fname, :dob, :phone)");
query.bindValue(":id", "1");
query.bindValue(":lname", "郑");
query.bindValue(":fname", "国锋");
query.bindValue(":dob", "1989-06-25");
query.bindValue(":phone", "15837802428");
query.exec();
QSqlQuery q2;
q2.prepare("insert into employee values(?, ?, ?, ?, ?)");
q2.addBindValue("2");
q2.addBindValue("Donald");
q2.addBindValue(" Knuth");
q2.addBindValue("2012-02-02");
q2.addBindValue("12345678999");
q2.exec();
query.exec("insert into employee values('3', '诸葛', '流云', '2010-06-09', '98765432100')");
query.exec("update employee set firstname='孔明' where id='3'");
query.exec("delete from employee where id='3'");
if (db.driver()->hasFeature(QSqlDriver::Transactions)) {
db.transaction();
query.exec("select lastname from employee where id='1'");
if (query.next()) {
QString str = "中国";
query.exec("insert into employee(lastname) values('"+str+"')");
QString str2 = "China";
query.exec("insert into employee(lastname) values('"+str2+"')"); }
db.commit();
}
QSqlQueryModel queryModel;
queryModel.setQuery("select * from employee");
QString str3 = "";
for (int num = 0; num < queryModel.rowCount(); ++num) {
str3 += queryModel.record(num).value("id").toString();
str3 += " # ";
str3 += queryModel.record(num).value("lastname").toString();
str3 += "/n";
}
display.append(str3);
QSqlTableModel tm;
tm.setTable("employee");
//tm.setFilter("id != NULL");
tm.select();
QString str4;
for (int num = 0; num < tm.rowCount(); ++num) {
QSqlRecord record = tm.record(num);
record.setValue("lastname", record.value("lastname").toString() + "修改");
tm.setRecord(num, record);
str4 += tm.record(num).value("id").toString();
str4 += "*";
str4 += tm.record(num).value("lastname").toString();
str4 += "/n";
}
if (tm.submitAll()) {
display.append("修改成功!");
} else {
display.append("修改失败!");
}
display.append(str4);
tm.setData(tm.index(0, 1), "哈哈");
tm.setData(tm.index(0, 0), "AAAAAAA");
if (tm.submitAll()) {
display.append("修改成功啦!");
}
tm.removeRow(2);
if (tm.submitAll()) {
display.append("删除成功喽,呵呵!/n");
} else {
display.append("删除失败喽,呜呜.../n");
}
QSqlRecord record2 = tm.record();
record2.setValue("lastname", "插入的");
tm.insertRecord(2, record2);
QTableView *view = new QTableView;
view->setModel(&tm);
view->show();
if (query.exec("select * from employee")) {
int numRows = 0;
if (db.driver()->hasFeature(QSqlDriver::QuerySize)) {
numRows = query.size();
} else {
query.last();
numRows = query.at() + 1;
query.seek(0);
}
QString id, lname, fname, phone;
QDateTime dob;
display.append(QString(30, '='));
display.append(QString::fromLocal8Bit("ID | 姓名 | 生日 | 电话"));
display.append(QString(60, '-'));
while (query.next()) {
id = query.value(0).toString();
lname = query.value(1).toString();
fname = query.value(2).toString();
dob = query.value(3).toDateTime();
phone = query.value(4).toString();
QString result = id + " " + lname + fname + " " + dob.toString() + " " + phone;
display.append(result);
}
display.append(QString(30, '='));
display.append(QString("Total: %1 rows").arg(numRows));
} else {
QSqlError error = query.lastError();
display.append("From mysql database:" + error.databaseText());
}
} else {
display.append("Cann't open database!");
display.append("Reason: " + db.lastError().databaseText());
QMessageBox::critical(0, qApp->tr("Cann't open database"),
qApp->tr("Unable to establish a database connection"),
QMessageBox::Cancel);
}
return a.exec();
}