VB中调用SQL的一些小问题

10 篇文章 1 订阅

        这一段时间,敲了两个系统,遇到了很多“小问题”,总结一下。

       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

PRINT

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 等等,我们可以在使用数据库表名时都加上[ ]防止此类错误的发生。



       总结仍在进行中,敬请期待~~~

  • 17
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值