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

这是我们经常遇到的问题,产生此类问题的原因很多,我们这段时间是用VB和数据库交互的,所以现阶段引起此类问题的主要原因是:数据库未连接!解决此问题的方法是查看数据库连接字符串是否正确,进行测试。
2.BOF或EOF中有一个是真,或者当前记录已被删除,要求一个当前记录
用到数据库时经常出现这个问题,可能原因是查询的数据表里无记录,当用到MoveFirst或MoveLast等时就会产生此类错误,因为数据表为空时EOF和BOF同时为True。解决方法有很多种,比如加上判断:
If mrc.RecordCount = 0 Then '判断记录集是否存在记录
MsgBox "没有记录!"
Exit Sub
End If或者使用错误处理:
On ErrorResumeNext
rss.MoveFirst
if Err=3021 then
Response.write "无数据!"
End If
3.多步OLE DB操作产生错误

产生此错误的原因可能是:数据类型或长度的输入与数据库设定的不符,导致输入的数据无法存入数据库中!解决方法是根据报错的代码所显示的数据库表,查看数据库表中的类型和长度,并在输入时设定上限制。为了防止这类问题的发生,在设计时,应该先设计好数据库中各字段存储的数据类型,根据类型和长度,在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 |
|

本文总结了在使用VB进行数据库操作时遇到的五个常见问题及其解决方案:对象变量未设置、BOF或EOF错误、多步OLEDB操作错误、对象关闭时不允许操作和查询关键字附近的语法错误。通过详细解释每个问题的原因及解决方法,帮助开发者避免常见的编程陷阱。
1448

被折叠的 条评论
为什么被折叠?



