程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 數據庫編程經驗兩則

數據庫編程經驗兩則

編輯:關於SqlServer
在往SQL Server數據庫中添加記錄時,每個字段必須給予明確賦值(即在沒有給數據表設定缺省規則或給每個字段設定缺省值的情況下),否則便發生錯誤。因此我用VB編寫了一個處理函數,將其放入標准模塊,以供相應程序調用。函數首先判斷是否給字段賦值,若沒有,則根據字段類型的不同賦予不同數值(數字賦零,字符賦空格)。程序如下:
  zd變量采用變體類型
Function nonull(zd As Variant) As Variant
If IsNull(zd) Then
  字段沒有賦值,判斷其類型
  If zd.Type = 12 Then
  字符型字段,賦空格
nonull = " "
Else
  數字型字段,賦0
nonull = 0
End If
Else
nonull = zd
End If
End Function

  二、多字段記錄的錄入
  如果我們需要編寫一個錄入程序,向某個SQL Server數據表(SJB)中錄入數據,而這個數據表中包含有多個字段,假設有30個字段,需通過Insert INTO語句完成。
Insert INTO SJB Value(A0,A1,A2,...,A29)
  這裡A0、A1...A29為字段的錄入值,其中,若字段類型為字符型,需用引號括起。並且,如果操作者在錄入數據時,對某些字段沒有賦予明確值,則還需借助前面給出的處理函數給這些字段賦予相應的0或‘’。雖然,我們在編程時可依照Insert INTO語句句法依次羅列出30個字段值,然而,變通一下,利用循環語句,不僅可以達到異曲同工的效果,而且使得程序不再冗長、煩瑣,可讀性好。下面列出相關程序片段:
...
Dim sqlstr As String
Dim sqlstr1 As String
Dim i As Integer
For i = 0 To 29
  rs.rdoColumns(I)為數據表中的某一字段
If rs.rdoColumns(i).Type = 12 Then
  字段類型為字符,在兩側用引號括起
  函數nonull()用於防止空值出現
  sqlstr = sqlstr && "注釋:" && nonull(A(i)) && "注釋:,"
  Else
  字段類型為數字型
sqlstr = sqlstr && nonull(A(i)) && ","
End If
Next
  去掉最後一個逗號分隔符
sqlstr = Left(Trim(sqlstr), Len(Trim(sqlstr)) - 1)
  插入一條記錄到數據表中
sqlstr1 = "insert into sjb values(" && sqlstr && ")"
...
  執行插入語句
cn.Execute sqlstr1
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved