VB中调用SQL的一些小问题
这一段时间,敲了两个系统,遇到了很多“小问题”,总结一下。
1.对象变量或With块变量未设置

这是我们经常遇到的问题,产生此类问题的原因很多,我们这段时间是用VB和数据库交互的,所以现阶段引起此类问题的主要原因是:数据库未连接!解决此问题的方法是查看数据库连接字符串是否正确,进行测试。
2.BOF或EOF中有一个是真,或者当前记录已被删除,要求一个当前记录
用到数据库时经常出现这个问题,可能原因是查询的数据表里无记录,当用到MoveFirst或MoveLast等时就会产生此类错误,因为数据表为空时EOF和BOF同时为True。解决方法有很多种,比如加上判断:
产生此错误的原因可能是:数据类型或长度的输入与数据库设定的不符,导致输入的数据无法存入数据库中!解决方法是根据报错的代码所显示的数据库表,查看数据库表中的类型和长度,并在输入时设定上限制。为了防止这类问题的发生,在设计时,应该先设计好数据库中各字段存储的数据类型,根据类型和长度,在VB中限定相对应的类型和长度,防止此类错误的发生。
4.对象关闭时不允许操作
![]()
这个问题很简单,但是很容易犯这样的错误,产生原因:如果需要某些表中的记录,则需要对表进行操作,表示打开表失败。解决方法是测试所需要的表是否进行了打开的操作,进行测试!
5.查询关键字附近有语法错误
![]()
这个问题报错时会报 “对象变量或With块变量未设置” 需要调试查出真正出问题的地方,产生此问题的一般原因是数据库表的名称和数据库的关键字相同,解决方法很简单,将数据库表名用[ ]括起来就行了!
下面这些词都是T-SQL语句中的关键字,在你写SQL语句,存储过程,触发器或字段命名等时要避免使用这些词!
ADD
EXIT
PRIMARY
ALL
FETCH
ALTER
FILE
PRIVILEGES
AND
FILLFACTOR
PROC
ANY
FLOPPY
PROCEDURE
AS
FOR
PROCESSEXIT
ASC
FOREIGN
PUBLIC
AUTHORIZATION
FREETEXT
RAISERROR
AVG
FREETEXTTABLE
READ
BACKUP
FROM
READTEXT
BEGIN
FULL
RECONFIGURE
BETWEEN
GOTO
REFERENCES
BREAK
GRANT
REPEATABLE
BROWSE
GROUP
REPLICATION
BULK
HAVING
RESTORE
BY
HOLDLOCK
RESTRICT
CASCADE
IDENTITY
RETURN
CASE
IDENTITY_INSERT
REVOKE
CHECK
IDENTITYCOL
RIGHT
CHECKPOINT
IF
ROLLBACK
CLOSE
IN
ROWCOUNT
CLUSTERED
INDEX
ROWGUIDCOL
COALESCE
INNER
RULE
COLUMN
INSERT
SAVE
COMMIT
INTERSECT
SCHEMA
COMMITTED
INTO
SELECT
COMPUTE
IS
SERIALIZABLE
CONFIRM
ISOLATION
SESSION_USER
CONSTRAINT
JOIN
SET
CONTAINS
KEY
SETUSER
CONTAINSTABLE
KILL
SHUTDOWN
CONTINUE
LEFT
SOME
CONTROLROW
LEVEL
STATISTICS
CONVERT
LIKE
SUM
COUNT
LINENO
SYSTEM_USER
CREATE
LOAD
TABLE
CROSS
MAX
TAPE
CURRENT
MIN
TEMP
CURRENT_DATE
MIRROREXIT
TEMPORARY
CURRENT_TIME
NATIONAL
TEXTSIZE
CURRENT_TIMESTAMP
NOCHECK
THEN
CURRENT_USER
NONCLUSTERED
TO
CURSOR
NOT
TOP
DATABASE
NULL
TRAN
DBCC
NULLIF
TRANSACTION
DEALLOCATE
OF
TRIGGER
DECLARE
OFF
TRUNCATE
DEFAULT
OFFSETS
TSEQUAL
DELETE
ON
UNCOMMITTED
DENY
ONCE
UNION
DESC
ONLY
UNIQUE
DISK
OPEN
UPDATE
DISTINCT
OPENDATASOURCE
UPDATETEXT
DISTRIBUTED
OPENQUERY
USE
DOUBLE
OPENROWSET
USER
DROP
OPTION
VALUES
DUMMY
OR
VARYING
DUMP
ORDER
VIEW
ELSE
OUTER
WAITFOR
END
OVER
WHEN
ERRLVL
PERCENT
WHERE
ERROREXIT
PERM
WHILE
ESCAPE
PERMANENT
WITH
EXCEPT
PIPE
WORK
EXEC
PLAN
WRITETEXT
EXECUTE
PRECISION
EXISTS
PREPARE
我们经常不会在意一些关键字尤其是像user、 work等等,我们可以在使用数据库表名时都加上[ ]防止此类错误的发生。
总结仍在进行中,敬请期待~~~
- 10楼jason_wii5分钟前
- T-SQL语句中的关键字,谢谢分享
- 9楼xiaokama5cp50分钟前
- 不太懂
- Re: kanglix1an50分钟前
- 嘿嘿
- 8楼xqf30951分钟前
- 总结是个好习惯,加油!
- Re: kanglix1an51分钟前
- 嘿嘿,恩呢
- 7楼aboy12351分钟前
- 这沙发占的真快啊
- Re: kanglix1an51分钟前
- 下次来早点哈~~
- 6楼sunliduan1小时前
- 总结的很详细,也很全面,小贤子很厉害哦!
- Re: kanglix1an1小时前
- 你也是,嘿嘿~~~
- 5楼zhuyc001小时前
- 需要学习啊1!!
- Re: kanglix1an1小时前
- 嘿嘿
- 4楼zhangye900831昨天 23:41
- 大牛
- Re: kanglix1an9小时前
- 嘿嘿
- 3楼liutengteng130昨天 20:53
- 积累,继续加油啊。
- Re: kanglix1an昨天 20:56
- 嗯嗯
- 2楼zhang_xinxiu昨天 20:49
- 加油、、
- Re: kanglix1an昨天 20:49
- 恩嗯,一块加油哈~~~
- 1楼lishehe昨天 20:47
- 加油
- Re: kanglix1an昨天 20:48
- 都加油哈

