明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

VB數(shù)據(jù)庫編程經(jīng)驗(yàn)2則

[摘要]在往SQL Server數(shù)據(jù)庫中添加記錄時(shí),每個(gè)字段必須給予明確賦值(即在沒有給數(shù)據(jù)表設(shè)定缺省規(guī)則或給每個(gè)字段設(shè)定缺省值的情況下),否則便發(fā)生錯(cuò)誤。因此我用VB編寫了一個(gè)處理函數(shù),將其放入標(biāo)準(zhǔn)模塊,...
在往SQL Server數(shù)據(jù)庫中添加記錄時(shí),每個(gè)字段必須給予明確賦值(即在沒有給數(shù)據(jù)表設(shè)定缺省規(guī)則或給每個(gè)字段設(shè)定缺省值的情況下),否則便發(fā)生錯(cuò)誤。因此我用VB編寫了一個(gè)處理函數(shù),將其放入標(biāo)準(zhǔn)模塊,以供相應(yīng)程序調(diào)用。函數(shù)首先判斷是否給字段賦值,若沒有,則根據(jù)字段類型的不同賦予不同數(shù)值(數(shù)字賦零,字符賦空格)。程序如下:

  ′zd變量采用變體類型

  Function nonull(zd As Variant) As Variant

  If IsNull(zd) Then

  ′字段沒有賦值,判斷其類型

  If zd.Type = 12 Then

  ′字符型字段,賦空格

  nonull = " "

  Else

  ′數(shù)字型字段,賦0

  nonull = 0

  End If

  Else

  nonull = zd

  End If

  End Function

  多字段記錄的錄入

  如果我們需要編寫一個(gè)錄入程序,向某個(gè)SQL Server數(shù)據(jù)表(SJB)中錄入數(shù)據(jù),而這個(gè)數(shù)據(jù)表中包含有多個(gè)字段,假設(shè)有30個(gè)字段,需通過Insert INTO語句完成。

  Insert INTO SJB Value(A0,A1,A2,...,A29)

  這里A0、A1...A29為字段的錄入值,其中,若字段類型為字符型,需用引號(hào)括起。并且,如果操作者在錄入數(shù)據(jù)時(shí),對某些字段沒有賦予明確值,則還需借助前面給出的處理函數(shù)給這些字段賦予相應(yīng)的0或‘ ’。雖然,我們在編程時(shí)可依照Insert INTO語句句法依次羅列出30個(gè)字段值,然而,變通一下,利用循環(huán)語句,不僅可以達(dá)到異曲同工的效果,而且使得程序不再冗長、煩瑣,可讀性好。下面列出相關(guān)程序片段:

  ...

  Dim sqlstr As String

  Dim sqlstr1 As String

  Dim i As Integer

  For i = 0 To 29

  ′rs.rdoColumns(I)為數(shù)據(jù)表中的某一字段

   If rs.rdoColumns(i).Type = 12 Then

  ′字段類型為字符,在兩側(cè)用引號(hào)括起

  ′函數(shù)nonull()用于防止空值出現(xiàn)

   sqlstr = sqlstr && "'" && nonull(A(i)) && "',"

   Else

  ′字段類型為數(shù)字型

   sqlstr = sqlstr && nonull(A(i)) && ","

   End If

  Next

  ′去掉最后一個(gè)逗號(hào)分隔符

  sqlstr = Left(Trim(sqlstr), Len(Trim(sqlstr)) - 1)

  ′插入一條記錄到數(shù)據(jù)表中

  sqlstr1 = "insert into sjb values(" && sqlstr && ")"

   ...

  ′執(zhí)行插入語句

  cn.Execute sqlstr1

  ...