这一段时间,敲了两个系统,遇到了很多“小问题”,总结一下。
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 If3.多步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中调用SQL的一些小问题全部内容,希望文章能够帮你解决VB中调用SQL的一些小问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)