一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

VB中訪問存儲(chǔ)過程的幾種辦法 - 設(shè)計(jì)前沿

 圭之源 2010-08-15

使用SQL存儲(chǔ)過程有什么好處

■SQL存儲(chǔ)過程執(zhí)行起來比SQL命令文本快得多。當(dāng)一個(gè)SQL語句包含在存儲(chǔ)過程中時(shí),服務(wù)器不必每次執(zhí)行它時(shí)都要分析和編譯它。
■調(diào)用存儲(chǔ)過程,可以認(rèn)為是一個(gè)三層結(jié)構(gòu)。這使你的程序易于維護(hù)。如果程序需要做某些改動(dòng),你只要改動(dòng)存儲(chǔ)過程即可
■你可以在存儲(chǔ)過程中利用Transact-SQL的強(qiáng)大功能。一個(gè)SQL存儲(chǔ)過程可以包含多個(gè)SQL語句。你可以使用變量和條件。這意味著你可以用存儲(chǔ)過程建立非常復(fù)雜的查詢,以非常復(fù)雜的方式更新數(shù)據(jù)庫。
■最后,這也許是最重要的,在存儲(chǔ)過程中可以使用參數(shù)。你可以傳送和返回參數(shù)。你還可以得到一個(gè)返回值(從SQL RETURN語句)。
環(huán)境:WinXP+VB6+sp6+SqlServer2000

數(shù)據(jù)庫:test
表:Users

CREATE TABLE [dbo].[users] (
       [id] [int] IDENTITY (1, 1) NOT NULL ,
       [truename] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
       [regname] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
      [pwd] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
       [sex] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
      [email] [text] COLLATE Chinese_PRC_CI_AS NULL ,
       [jifen] [decimal](18, 2) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

ALTER TABLE [dbo].[users] WITH NOCHECK ADD
       CONSTRAINT [PK_users] PRIMARY KEY  CLUSTERED
       (
              [id]
       )  ON [PRIMARY]
GO

存儲(chǔ)過程select_users
CREATE PROCEDURE select_users  @regname char(20),  @numrows int OUTPUT
AS
       Select  *  from users

       SELECT @numrows = @@ROWCOUNT

       if @numrows = 0
              return 0
       else         return 1
GO

存儲(chǔ)過程insert_users
CREATE PROCEDURE insert_users @truename char(20), @regname char(20),@pwd char(20),@sex char(20),@email char(20),@jifen decimal(19,2)
AS
insert into users(truename,regname,pwd,sex,email,jifen) values(@truename,@regname,@pwd,@sex,@email,@jifen)
GO

在VB環(huán)境中,添加DataGrid控件,4個(gè)按鈕,6個(gè)文本框
代碼簡(jiǎn)單易懂。

‘引用microsoft active data object 2.X library
Option Explicit
Dim mConn As ADODB.Connection
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Dim rs3 As ADODB.Recordset
Dim rs4 As ADODB.Recordset

Dim cmd As ADODB.Command
Dim param As ADODB.Parameter

'這里用第一種方法使用存儲(chǔ)過程添加數(shù)據(jù)
Private Sub Command1_Click()
   
    Set cmd = New ADODB.Command
    Set rs1 = New ADODB.Recordset
    cmd.ActiveConnection = mConn
    cmd.CommandText = "insert_users"
    cmd.CommandType = adCmdStoredProc
   
    Set param = cmd.CreateParameter("truename", adChar, adParamInput, 20, Trim(txttruename.Text))
    cmd.Parameters.Append param
    Set param = cmd.CreateParameter("regname", adChar, adParamInput, 20, Trim(txtregname.Text))
    cmd.Parameters.Append param
    Set param = cmd.CreateParameter("pwd", adChar, adParamInput, 20, Trim(txtpwd.Text))
    cmd.Parameters.Append param
    Set param = cmd.CreateParameter("sex", adChar, adParamInput, 20, Trim(txtsex.Text))
    cmd.Parameters.Append param
    Set param = cmd.CreateParameter("email", adChar, adParamInput, 20, Trim(txtemail.Text))
cmd.Parameters.Append param
‘下面的類型需要注意,如果不使用adSingle,會(huì)發(fā)生一個(gè)精度無效的錯(cuò)誤
    Set param = cmd.CreateParameter("jifen", adSingle, adParamInput, 50, Val(txtjifen.Text))
    cmd.Parameters.Append param
    Set rs1 = cmd.Execute
   
    Set cmd = Nothing
    Set rs1 = Nothing
   
End Sub

'這里用第二種方法使用存儲(chǔ)過程添加數(shù)據(jù)
Private Sub Command2_Click()
    Set rs2 = New ADODB.Recordset
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = mConn
    cmd.CommandText = "insert_users"
    cmd.CommandType = adCmdStoredProc
   
    cmd.Parameters("@truename") = Trim(txttruename.Text)
    cmd.Parameters("@regname") = Trim(txtregname.Text)
    cmd.Parameters("@pwd") = Trim(txtpwd.Text)
    cmd.Parameters("@sex") = Trim(txtsex.Text)
    cmd.Parameters("@email") = Trim(txtemail.Text)
    cmd.Parameters("@jifen") = Val(txtjifen.Text)
 
    Set rs2 = cmd.Execute
   
    Set cmd = Nothing
    Set rs1 = Nothing
End Sub

'這里用第三種方法使用連接對(duì)象來插入數(shù)據(jù)
Private Sub Command4_Click()
 Dim strsql As String
 strsql = "insert_users  '" & Trim(txttruename.Text) & "','" & Trim(txtregname.Text) & "','" & Trim(txtpwd.Text) & "','" & Trim(txtsex.Text) & "','" & Trim(txtemail.Text) & "','" & Val(txtjifen.Text) & "'"
 Set rs3 = New ADODB.Recordset
 Set rs3 = mConn.Execute(strsql)
 
 Set rs3 = Nothing
End Sub

'利用存儲(chǔ)過程顯示數(shù)據(jù)
‘要處理多種參數(shù),輸入?yún)?shù),輸出參數(shù)以及一個(gè)直接返回值
 Private Sub Command3_Click()
    Set rs4 = New ADODB.Recordset
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = mConn
    cmd.CommandText = "select_users"
    cmd.CommandType = adCmdStoredProc
   
    '返回值
    Set param = cmd.CreateParameter("RetVal", adInteger, adParamReturnValue, 4)
    cmd.Parameters.Append param
    '輸入?yún)?shù)
    Set param = cmd.CreateParameter("regname", adChar, adParamInput, 20, Trim(txtregname.Text))
    cmd.Parameters.Append param
    '輸出參數(shù)
    Set param = cmd.CreateParameter("numrows", adInteger, adParamOutput)
    cmd.Parameters.Append param
       
    Set rs4 = cmd.Execute()
    If cmd.Parameters("RetVal").Value = 1 Then
        MsgBox cmd.Parameters("numrows").Value
    Else
        MsgBox "沒有記錄"
    End If
   
    MsgBox rs4.RecordCount
    Set DataGrid1.DataSource = rs4
    DataGrid1.Refresh

End Sub

'連接數(shù)據(jù)庫
Private Sub Form_Load()
    Set mConn = New Connection
    mConn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data Source=yang"
    mConn.CursorLocation = adUseClient '設(shè)置為客戶端
    mConn.Open
End Sub
'關(guān)閉數(shù)據(jù)連接
Private Sub Form_Unload(Cancel As Integer)
    mConn.Close
    Set mConn = Nothing
End Sub

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    手机在线观看亚洲中文字幕| 视频在线播放你懂的一区| 色涩一区二区三区四区| 免费在线成人午夜视频| 亚洲精品一区三区三区| 久久精品亚洲精品一区| 国产日韩中文视频一区| 噜噜中文字幕一区二区| 欧美日韩国内一区二区| 国产一区二区三中文字幕| 熟女少妇一区二区三区蜜桃| 日韩一级一片内射视频4k| 日韩免费国产91在线| 国产成人午夜在线视频| 久久99热成人网不卡| 精品人妻久久一品二品三品| 一个人的久久精彩视频| 久久这里只精品免费福利| 天堂热东京热男人天堂| 日本亚洲欧美男人的天堂| 国产精品偷拍一区二区| 激情三级在线观看视频| 精品女同在线一区二区| 中文字幕区自拍偷拍区| 欧美成人一区二区三区在线| 一区中文字幕人妻少妇| 亚洲综合精品天堂夜夜| 翘臀少妇成人一区二区| 亚洲欧美日韩在线看片| 国产一区在线免费国产一区| 欧美中文字幕日韩精品| 国产一级不卡视频在线观看| 国产精品亚洲欧美一区麻豆| 日韩人妻中文字幕精品| 好吊妞视频这里有精品| 午夜久久久精品国产精品| 九七人妻一区二区三区| 亚洲综合色婷婷七月丁香| 久久久免费精品人妻一区二区三区| 国产亚洲午夜高清国产拍精品| 91在线播放在线播放观看|