2015-12-03 51 views
-3

我想創建表到MySQL數據庫。我能夠成功地打開數據庫,但包含創建表命令不起作用的查詢? 如果有人知道它,請讓我知道我會很感激。如何在Qt中創建mysql數據庫表?

mydb = QSqlDatabase::addDatabase("QMYSQL"); 
mydb.setDatabaseName("mylogin"); 

mydb.setUserName("root"); 
mydb.setPort(3306); 
mydb.setHostName("localhost"); 
mydb.setPassword(""); 

if(!mydb.open()) 
{ 
    qDebug() << "failed" ; 
    qDebug() << mydb.lastError().text(); 
} 
QSqlQuery qry; 
qry.prepare("CREATE TABLE RSA(name varchar(20);"); 
if(qry.exec()) 
{ 
    QMessageBox msg; 
    msg.setText("Data saved"); 
    msg.exec(); 
    mydb.close(); 
    mydb.removeDatabase(QSqlDatabase::defaultConnection); 
} 
else 
{ 
    QMessageBox msg2; 
    msg2.setText("Failed to save data"); 
    msg2.exec(); 
    qDebug() << mydb.lastError().text(); 
} 
} 
+0

張貼您的代碼請 – demonplus

+0

我已編輯我的張貼檢查一次 –

+0

什麼是錯誤返回? – demonplus

回答

0

第一:你必須檢查QSqlQuery ::首先準備返回值。下面是簽名:

bool QSqlQuery::prepare (const QString & query) 

二:什麼是MySQL的自動提交值,爲您的連接?如果默認自動提交爲0,則在查詢執行後您必須致電QSqlDatabase::commit。或者在數據庫連接初始化期間將自動提交值設置爲1。

+0

自動提交狀態不會影響MySQL中的DDL查詢,因此您的答案無法正確 –

0

首先,你的SQL語句中有一個語法錯誤,你錯過了最後的右括號。其次,爲了您的目的,您不需要準備好您的SQL語句以便使用它,您可以簡單地執行它。

QSqlQuery qry; 
if(qry.exec("CREATE TABLE RSA(name varchar(20))")) 
{ 
//....