当前位置: 代码迷 >> SQL >> VB中调用SQL的一些小疑点
  详细解决方案

VB中调用SQL的一些小疑点

热度:36   发布时间:2016-05-05 13:36:24.0
VB中调用SQL的一些小问题

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

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



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

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
都加油哈
  相关解决方案