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,希望有帮助。

时间: 2024-10-13 15:27:52

Qt 数据库创建表失败原因之数据库关键字的相关文章

Oracle数据库创建表空间

--Oracle数据库创建表空间 create tablespace new_taspace --表空间名 DATAFILE 'D:\NEWTABLESPACE.DBF'   --表空间关联的数据文件和位置 size 200M --文件初始大小 autoextend on next 20MB MAXSIZE 400MB; --文件大小可自动扩展,每次扩展20MB,最大400MB --创建表空间 create tablespace new_taspace1 --表空间关联的数据文件和位置 DATA

数据库创建表空间、临时表空、用户、授权

备注:oracle版本Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 说明:创建临时表空间注意关键字和创建表空间有所差别,语句类似 关于创建语句解说请查看:http://blog.chinaunix.net/uid-20802110-id-2105656.html 所列语句都是经过测试实战! 1.创建表数据空间 说明:该版本数据库创建表空间执行logging时报错,不执行logging,默认也是logging create ta

Java在HBase数据库创建表

Java在HBase数据库创建表 作者:chszs,版权所有,未经同意,不得转载.博主主页:http://blog.csdn.net/chszs 要通过Java在HBase中创建一个数据表,首先需要导入hbase-client.jar驱动包.可以在项目pom.xml配置文件中添加依赖: <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client<artifactId

MySql数据库创建表

3.3.MySql数据库创建表 创建5个表: UserInfo用户基础表 Role 角色表 MenuInfo 菜单即控制表 Relation_Role_Menu 角色对应菜单关系表 RelaTion_User_Role  用户角色关系表 Depart 部门信息表 表名:USERINFO 用户信息表 序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明 1 ID INT 是 否 主键 2 USER_NAME VARCHAR 100 是 用户姓名 3 USER_ID VARCHAR

sqlite3 数据库创建表

# coding=utf-8"""1.导入模块sqlite32.创建连接 sqlite3.connect()3.创建游标对象4.编写创建表的sql语句5.执行sql6.关闭连接"""import sqlite3 # 创建连接con = sqlite3.connect("E:/sqlite3Demo/demo.db")# 创建游标对象cur = con.cursor()# 创建sql语句sql = '''create table

hive创建表失败,drop表失败

一.hive创建表失败,报错: CREATE TABLE pokes (foo INT, bar STRING);FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:javax.jdo.JDODataStoreException: An exception was thrown while adding/validating class(

数据库第一节 安装mysql sever5.5与查看数据库创建表

2018.05.03数据库上课第一节 mysql sever5.5安装过程中最后一步出现失败的现象不明原因 第一步 打开后弹框选,选择Next下一步 第二步 弹出下一步对话框后选择接受此协议 第三步 选择第二步,习惯设置选项(custom)后点击下一步(next) 第四步 在出现自定义安装界面中选择mysql数据库的安装路径,这里我设置的是C盘(网图所示是D盘符我的path选项在C盘)单击"next"继续安装,如图所示: 第五步  接下来进入到准备安装的界面,首先确认一下先前的设置,如

2016/3/10 数据库简单操作( 创建数据库 创建表 数值类型 主键 外键 自动递增 )

1,在连接下的根目录上点右键,创建数据库      输入数据库名,字符集要设置好,与网页对应起来 点击确定 创建成功2,双击打开数据库     第一个显示的是表 最重要最基础的是表.3,创建表,找到表右键,创建表.     首先要确定列,列名,数据库中不要用中文名来做列名.     再确定数值,类型 bit 布尔型只能存储true false decimal更长可以自己定义 一般用float      char是字符 长度设为1 只能是1 varchar 用来存储字符串 可以设置长度 常用的长度

Linux oracle数据库创建表空间、用户并赋予权限

管理员用户登录oracle数据库 1.创建临时表空间 select name from v$tempfile;查出当前数据库临时表空间,主要是使用里面的存放路径: 得到其中一条记录/opt/oracle/oradata/orcl/temp01.dbf 创建临时表空间:create temporary tablespace plncontrol_temp tempfile '/opt/oracle/oradata/orcl/plncontrol_temp.dbf' size 100m reuse