VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • 基于VB.Net的SQL数据库操作

本人是根据自己的经历,将有基于VB.Net的数据库的操作整理如下,或许不是很完整,后面有机会再补充。现将代码里面的大概内容叙述一下:

  1. New(connectstr)方法是创建带参数的SQLDataBase的实例;
  2. UpdateSQL(updatecmd)方法是执行updatecmd数据库语句,更新数据库;
  3. ExecuteSQLToArray(CommandText)函数是通过Sqlreader来获取服务器数据库里面的值,返回的是二维字符串类型的数组;
  4. ExecuteSQLToDataTable(SelectCommandText)函数通过SqlDataAdapter来获取服务器数据库里面的值,返回的是DataTable对象,方便后期的处理;
  5. close()方法是释放资源,关闭数据库连接。

  1.  
    '********************************
  2.  
    ' Function: 定义SQL数据库操作的类
  3.  
    ' Author: 要点理想色彩
  4.  
    ' Createtime: 2018/07/23
  5.  
    ' Remark:
  6.  
    '*******************************
  7.  
    Imports System.Data.SqlClient
  8.  
    Public Class SQLDataBase
  9.  
    ' 数据库连接字符串
  10.  
    Private cnstr As String = ""
  11.  
    ' 数据库执行的SQL脚本
  12.  
    Private sqlstr As String = ""
  13.  
    ' 数据库连接对象
  14.  
    Private cn As SqlConnection
  15.  
    ' SQl执行语句命令
  16.  
    Private cmd As SqlCommand
  17.  
     
  18.  
    ''' <summary>
  19.  
    ''' 创建SQlDataBase类的实例,并打开以《connectstr》为连接字符串的数据库
  20.  
    ''' </summary>
  21.  
    ''' <param name="connectstr">连接数据库的字符串;例如:Data Source=IPadress;Initial Catalog=DataBaseName;Integrated Security=false;User ID=用户名;Password=密码;</param>
  22.  
    ''' <remarks></remarks>
  23.  
    Public Sub New(ByVal connectstr As String)
  24.  
    ' 给数据库连接字符赋值
  25.  
    If connectstr.Length = 0 Then
  26.  
    MsgBox("connectstr为空,创建SQLDataBase失败")
  27.  
    Exit Sub
  28.  
    Else
  29.  
    cnstr = connectstr
  30.  
    End If
  31.  
     
  32.  
    ' 连接到数据库,并打开
  33.  
    Try
  34.  
    cn = New SqlConnection(cnstr)
  35.  
    cn.Open()
  36.  
    Catch ex As Exception
  37.  
    MsgBox("错误代码为:" & Err.Number & vbCrLf & "错误描述为: " & Err.Description)
  38.  
    Exit Sub
  39.  
    End Try
  40.  
    End Sub
  41.  
     
  42.  
    ''' <summary>
  43.  
    ''' 执行SQL更新语句
  44.  
    ''' </summary>
  45.  
    ''' <param name="updatecmd"></param>
  46.  
    ''' <remarks></remarks>
  47.  
    Public Sub UpdateSQL(ByVal updatecmd As String)
  48.  
     
  49.  
    ' 给数据库执行脚本sqlstr赋值
  50.  
    If updatecmd.Length = 0 Then
  51.  
    MsgBox("updatecmd为空,无法更新数据库")
  52.  
    Exit Sub
  53.  
    Else
  54.  
    sqlstr = updatecmd
  55.  
    End If
  56.  
     
  57.  
    ' 给命令对象赋值
  58.  
    cmd = New SqlCommand With {.CommandText = updatecmd, .Connection = cn}
  59.  
     
  60.  
    ' 定义执行SQL语句收影响的行数
  61.  
    Dim influnrows As Integer
  62.  
    Try
  63.  
    influnrows = cmd.ExecuteNonQuery()
  64.  
    Catch ex As Exception
  65.  
    MsgBox("错误代码为:" & Err.Number & vbCrLf & "错误描述为: " & Err.Description)
  66.  
    Exit Sub
  67.  
    End Try
  68.  
    End Sub
  69.  
     
  70.  
    ''' <summary>
  71.  
    ''' 通过Sqlreader来获取服务器数据库里面的值,返回的是二维字符串类型的数组
  72.  
    ''' </summary>
  73.  
    ''' <param name="CommandText">Transact-SQL语句</param>
  74.  
    ''' <returns>返回的是二维字符串类型的数组</returns>
  75.  
    ''' <remarks></remarks>
  76.  
    Public Function ExecuteSQLToArray(ByVal CommandText As String) As String(,)
  77.  
     
  78.  
    ' 定义函数的返回结果
  79.  
    Dim FunRet As String(,) = Nothing
  80.  
    ' 定义数据库reader对象
  81.  
    Dim reader As SqlDataReader = Nothing
  82.  
     
  83.  
    ' 给数据库执行脚本sqlstr赋值
  84.  
    If CommandText.Length = 0 Then
  85.  
    MsgBox("updatecmd为空,无法更新数据库")
  86.  
    Return FunRet
  87.  
    Else
  88.  
    sqlstr = CommandText
  89.  
    End If
  90.  
     
  91.  
    ' 给命令对象赋值
  92.  
    cmd = New SqlCommand With {.CommandText = CommandText, .Connection = cn}
  93.  
    ' 给reader对象赋值
  94.  
    reader = cmd.ExecuteReader()
  95.  
     
  96.  
    '判断是否有结果
  97.  
    If reader.HasRows = False Then
  98.  
    Return FunRet
  99.  
    End If
  100.  
     
  101.  
     
  102.  
    '*********************
  103.  
    'remarks:因为reader是一条一条语句的读取, reader只能获取列数, 不能获取行数, 因此需要将总的记录除以列数皆可以获取行数
  104.  
    '*********************
  105.  
     
  106.  
    ' 定义函数返回数组的列数和行数
  107.  
    Dim lstReader As New List(Of String)
  108.  
    Dim intColumnCount As Integer
  109.  
    Dim intRowsCount As Integer
  110.  
     
  111.  
    '将结果集存到listReader列表
  112.  
    intColumnCount = reader.FieldCount
  113.  
    While reader.Read()
  114.  
    For i = 0 To intColumnCount - 1
  115.  
    lstReader.Add(reader.GetValue(i).ToString) '//如果数据库里面是null,则返回的是空值
  116.  
    Next
  117.  
    End While
  118.  
     
  119.  
    '获取结果集的行数
  120.  
    intRowsCount = lstReader.Count / intColumnCount
  121.  
     
  122.  
    '将结果转化为二位数组
  123.  
    ReDim FunRet(intRowsCount - 1, intColumnCount - 1)
  124.  
    Dim index As Integer = 0
  125.  
    For j = 0 To UBound(FunRet, 1)
  126.  
    For i = 0 To UBound(FunRet, 2)
  127.  
    FunRet(j, i) = lstReader.Item(index)
  128.  
    index = index + 1
  129.  
    Next
  130.  
    Next
  131.  
     
  132.  
    '将函数的结果返回
  133.  
    Return FunRet
  134.  
    End Function
  135.  
     
  136.  
    ''' <summary>
  137.  
    ''' 通过SqlDataAdapter来获取服务器数据库里面的值,返回的是DataTable对象
  138.  
    ''' </summary>
  139.  
    ''' <param name="SelectCommandText">Transact-SQL语句</param>
  140.  
    ''' <returns>返回的是二维字符串类型的数组</returns>
  141.  
    ''' <remarks></remarks>
  142.  
    Public Function ExecuteSQLToDataTable(ByVal SelectCommandText As String) As DataTable
  143.  
     
  144.  
    ' 定义函数的返回结果
  145.  
    Dim FunRet As New DataTable
  146.  
     
  147.  
    ' 给数据库执行脚本sqlstr赋值
  148.  
    If SelectCommandText.Length = 0 Then
  149.  
    MsgBox("updatecmd为空,无法更新数据库")
  150.  
    Return FunRet
  151.  
    End If
  152.  
     
  153.  
    '将结果填充到SqlDataAdapter中
  154.  
    Dim sda As SqlDataAdapter
  155.  
    sda = New SqlDataAdapter(SelectCommandText, cn)
  156.  
    sda.Fill(FunRet)
  157.  
     
  158.  
    '返回函数的值
  159.  
    Return FunRet
  160.  
    End Function
  161.  
     
  162.  
    ''' <summary>
  163.  
    ''' 释放资源,关闭数据库连接
  164.  
    ''' </summary>
  165.  
    ''' <remarks></remarks>
  166.  
    Public Sub close()
  167.  
     
  168.  
    '关闭cmd对象
  169.  
    If IsNothing(cmd) = False Then
  170.  
    cmd = Nothing
  171.  
    End If
  172.  
     
  173.  
    '断开和数据库的连接
  174.  
    If IsNothing(cn) = False Then
  175.  
    cn.Close()
  176.  
    End If
  177.  
    End Sub
  178.  
    End Class
 

 


相关教程