Qt 數據庫創建表失敗原因之數據庫關鍵字


    本人數據庫新手,在創建表時出現問題,最后經查證,找出問題所在。下面的程序是部分節選,在創建數據庫表的時候,起先使用的L24的CreateDB,經測試,一直輸出 Create testResult Fail,

query->isActive()也為false,這就說明問題出在createDB上,也就是說這個QString應該是不符合要求才出錯的。后來逐個測試,最后發現是
check varchar(100)的原因,經查看check是數據庫關鍵字。
 
        
 1 //創建數據庫文件路徑
 2 testResultPath = APPDIR + "/TestReport/";
 3     QDir my_dir(testResultPath);
 4     if (!my_dir.exists())
 5         my_dir.mkpath(testResultPath);
 6     testResultPath += "testResult.db";
 7 
 8        //創建數據庫
 9     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
10     //db.setHostName("easybook-3313b0");      //可以省略
11     db.setDatabaseName(testResultPath);
12     //db.setUserName("CETG54th");                //設置數據庫用戶名,可以省略
13     //db.setPassword("123456");                   //設置數據庫密碼,可以省略
14     db.open();
15     if (!db.isOpen())
16     {
17         qDebug() << "db is not open";
18         return;
19     }
20 
21 
22      //創建數據庫表
23     QSqlQuery *query = new QSqlQuery("", db);
24     //const QString createDB = "create table testResult(id int primary key,testDevice varchar(100),project varchar(100),exc varchar(100),display varchar(100),result varchar(100),time varchar(100),check varchar(100))";      //fail
25     
26     const QString createDB = "create table testResult(id int primary key,testDevice varchar(100),project varchar(100),exc varchar(100),display varchar(100),result varchar(100),time varchar(100),viewInfo varchar(100))";   //success
27     
28     if (query->exec(createDB))
29         qDebug() << "Create testResult Successful";
30     else
31         qDebug() << "Create testResult Fail";
32 
33     qDebug() << query->isActive();

 

下面羅列了數據庫關鍵字

A
ABSOLUTE ACTION ADD ADMINDB
ALL ALLOCATE ALPHANUMERIC ALTER
AND ANY ARE AS
ASC ASSERTION AT AUTHORIZATION
AUTOINCREMENT AVG

B
BAND BEGIN BETWEEN BINARY
BIT BIT_LENGTH BNOT BOR
BOTH BXOR BY BYTE

C
CASCADE CASCADED CASE CAST
CATALOG CHAR CHARACTER CHAR_LENGTH
CHARACTER_LENGTH CHECK CLOSE COALESCE
COLLATE COLLATION COLUMN COMMIT
COMP COMPRESSION CONNECT CONNECTION
CONSTRAINT CONSTRAINTS CONTAINER CONTINUE
CONVERT CORRESPONDING COUNT COUNTER
CREATE CREATEDB CROSS CURRENCY
CURRENT CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP
CURRENT_USER CURSOR

D
DATABASE DATE DATETIME DAY
DEALLOCATE DEC DECIMAL DECLARE
DEFAULT DEFERRABLE DEFERRED DELETE
DESC DESCRIBE DESCRIPTOR DIAGNOSTICS
DISALLOW DISCONNECT DISTINCT DOMAIN
DOUBLE DROP

E
ELSE END END-EXEC ESCAPE
EXCEPT EXCEPTION EXCLUSIVECONNECT EXEC
EXECUTE EXISTS EXTERNAL EXTRACT

F
FALSE FETCH FIRST FLOAT
FLOAT4 FLOAT8 FOR FOREIGN
FOUND FROM FULL

G
GENERAL GET GLOBAL GO
GOTO GRANT GROUP GUID

H
HAVING HOUR

I
IDENTITY IEEEDOUBLE IEEESINGLE IGNORE
IMAGE IMMEDIATE IN INDEX
INDICATOR INHERITABLE INITIALLY INNER
INPUT INSENSITIVE INSERT INT
INTEGER INTEGER1 INTEGER2 INTEGER4
INTERSECT INTERVAL INTO IS
ISOLATION

J
JOIN

K
KEY

L
LANGUAGE LAST LEADING LEFT
LEVEL LIKE LOCAL LOGICAL
LOGICAL1 LONG LONGBINARY LONGCHAR
LONGTEXT LOWER

M
MATCH MAX MEMO MIN
MINUTE MODULE MONEY MONTH

N
NAMES NATIONAL NATURAL NCHAR
NEXT NO NOT NOTE
NULL NULLIF NUMBER NUMERIC

O
OBJECT OCTET_LENGTH OF OLEOBJECT
ON ONLY OPEN OPTION
OR ORDER OUTER OUTPUT
OVERLAPS OWNERACCESS

P
PAD PARAMETERS PARTIAL PASSWORD
PERCENT PIVOT POSITION PRECISION
PREPARE PRESERVE PRIMARY PRIOR
PRIVILEGES PROC PROCEDURE PUBLIC

Q
R
READ REAL REFERENCES RELATIVE
RESTRICT REVOKE RIGHT ROLLBACK
ROWS

S
SCHEMA SCROLL SECOND SECTION
SELECT SELECTSCHEMA SELECTSECURITY SESSION
SESSION_USER SET SHORT SINGLE
SIZE SMALLINT SOME SPACE
SQL SQLCODE SQLERROR SQLSTATE
STRING SUBSTRING SUM SYSTEM_USER

T
TABLE TABLEID TEMPORARY TEXT
THEN TIME TIMESTAMP TIMEZONE_HOUR
TIMEZONE_MINUTE TO TOP TRAILING
TRANSACTION TRANSFORM TRANSLATE TRANSLATION
TRIM TRUE

U
UNION UNIQUE UNIQUEIDENTIFIER UNKNOWN
UPDATE UPDATEIDENTITY UPDATEOWNER UPDATESECURITY
UPPER USAGE USER USING

V
VALUE VALUES VARBINARY VARCHAR
VARYING VIEW

W
WHEN WHENEVER WHERE WITH
WORK WRITE

X
Y
YEAR YESNO

Z
ZONE

     上面的關鍵字主要轉自http://zhidao.baidu.com/link?url=RmJBWdmrnxciebfhmXsiJF3bZzgb1Yw0ywkhugHxcyBLKMixClmJl8pulL-m7sasPaAoUgzPqYFlGyPH5gQ36TJOsn7j_iGHDLAbXbfQrJe

 

     另外如果使用數據庫出現的問題非上述問題,則推薦博客http://www.cnblogs.com/findumars/p/4207133.html,希望有幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM