1、应该有避免出错的方法。入A表的BID有对应B表ID的外键,可以
IF EXISTS (SELECT * FROM B WHERE ID=1)
INSERT A (...,BID) VALUES(...,1)
2、一般语言都有捕捉错误的功能,如VB:on error goto err_handle
con.execute "insert a(...) values (...)"
...
exit sub
err_handle:
'错误处理
IF EXISTS (SELECT * FROM B WHERE ID=1)
INSERT A (...,BID) VALUES(...,1)
2、一般语言都有捕捉错误的功能,如VB:on error goto err_handle
con.execute "insert a(...) values (...)"
...
exit sub
err_handle:
'错误处理
2。一般的程序语言都有错误信息功能的,象VB 可以通过
ON ERROR GOTO 。
catch(_com_err)里
#include <sqldb.h>int msg_handler (dbproc, msgno, msgstate, severity, msgtext, srvname, procname, line)
DBPROCESS *dbproc;
DBINT msgno
int msgstate
int severity
char *msgtext
char *srvname
char *procname
DBUSMALLINT line{
printf ("SQL Server message %ld, state %d, "
"severity %d: \n\t%s\n", msgno, msgstate, severity, msgtext);
if (strlen (srvname) != 0)
printf ("Server '%s', ", srvname);
if (strlen (procname) != 0)
printf ("Procedure '%s', ", procname);
if (line !=0)
printf ("Line %d", line);return (0);}
. . .
Dim errLoop As ADODB.Error
. . .
' Loop through each Error object in Errors collection.
For Each errLoop In cn.Errors Dim strError(5)
Dim i As Integer
strError(0) = "Error Number: " & errLoop.Number
strError(1) = " Description: " & errLoop.Description
strError(2) = " Source: " & errLoop.Source
strError(3) = " SQL State: " & errLoop.SQLState
strError(4) = " Native Error: " & errLoop.NativeError
' Loop through the five specified properties of Error object.
i = 0
Do While i < 5
Form2.lstErrors.AddItem strError(i)
i = i + 1
Loop
Form2.lstErrors.AddItem ""
Next
' Create string for summary count of errors.
c = cn.Errors.Count & " provider error(s) occurred."
' Display a count of the provider errors.
Form2.lstErrors.AddItem c
Form2.lstErrors.AddItem ""' Clear the Errors collection.
cn.Errors.Clear