vb.net的using用法

来源:互联网 发布:青岛软件开发 编辑:程序博客网 时间:2024/05/16 10:25

今天看到了一位朋友对using的讲解

因此也对它有了一定的了解

特此把他的文章转载过来 ,方便以后查看

 

--------------------------------------------------------------------------------------------------------------------------------

 

 1 引入命名空间


 

我们在C#里面用Using引入命名空间,就是vb.net里面的imports的作用是一样的,只是不是一样的语言,但是效果都是一样的。
例如:

Using System.Data.SqlClient


2 用于别名

using别名。using + 别名 = 包括详细命名空间信息的具体的类型。

这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。(这个是我从别人那里引用来的)


 

3 释放对象


 

这个东西是我今天主要要讲的内容,Using在代码里面有的初学者,不知道他到底是干嘛的,处于好奇心就将这个Using去掉,发现这段代码,依然可以正确的执行而不报错。这是为什么呢?这个Using又有什么用呢?我就不卖关子了,其实他的作用就是释放一个对象。

例如可以释放一个数据库的连接:

[html] view plaincopyprint?
  1. /// 该方法传入一个查询SQL语句或是存储过程<summary>  
  2.       /// 该方法传入一个查询SQL语句或是存储过程  
  3.       /// </summary>  
  4.       /// <param name="cmtText">SQL查询语句或存储过程</param>  
  5.       /// <returns></returns>  
  6.       public DataTable ExecuteQuery(string cmtText,CommandType ct)  
  7.       {  
  8.           DataTable dt = new DataTable();  
  9.           cmd = new SqlCommand(cmtText, GetConn());  
  10.           cmd.CommandType = ct;  
  11.           //关系sdr的同是将会关闭conn  
  12.           using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))  
  13.           {  
  14.               dt.Load(sdr);  
  15.           }  
  16.           return dt;  
  17.       }  
  /// 该方法传入一个查询SQL语句或是存储过程<summary>        /// 该方法传入一个查询SQL语句或是存储过程        /// </summary>        /// <param name="cmtText">SQL查询语句或存储过程</param>        /// <returns></returns>        public DataTable ExecuteQuery(string cmtText,CommandType ct)        {            DataTable dt = new DataTable();            cmd = new SqlCommand(cmtText, GetConn());            cmd.CommandType = ct;            //关系sdr的同是将会关闭conn            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))            {                dt.Load(sdr);            }            return dt;        }

 

这个是可以释放数据库的连接的也关闭了SqlDataReader对象,那么接下来这个这样使用就是错误的代码展示

[html] view plaincopyprint?
  1. Imports System.Data.SqlClient  
  2. Public Class Form1  
  3.   
  4.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  
  5.         '定义一个连接数据库的字符串    
  6.         Dim connStr As String  
  7.         '这里是链接本地的数据库的字符串    
  8.         connStr = "Data Source=lizhihua-pc;database=newssystem;uid=sa;pwd=123456"  
  9.         '定义一个数据库连接的对象()  
  10.         Dim conn As SqlConnection  
  11.         '实现数据的连接    
  12.         conn = New SqlConnection(connStr)  
  13.         conn.Open()  
  14.         '定义Sql语句字符串的变量    
  15.         Dim sql As String  
  16.         '向数据库中插入数据的Sql语句    
  17.         sql = "insert into category ([name]) values (' 哈哈 ')"  
  18.         '定义一个执行Sql语句的对象()  
  19.         Dim res As Integer  
  20.         Dim cmd As SqlCommand  
  21.         cmd = New SqlCommand(sql, conn)  
  22.         '目的:释放数据库连接        
  23.         Using (cmd)  
  24.             res = cmd.ExecuteNonQuery()  
  25.         End Using  
  26.         If (conn.State = ConnectionState.Closed) Then  
  27.             MsgBox("对象释放成功!")  
  28.         Else  
  29.             MsgBox("对象释放失败!")  
  30.         End If  
  31.   
  32.   
  33.         '定义一个整数类型的变量,执行完Sql语句所影响的行数    
  34.   
  35.         '执行Sql语句    
  36.   
  37.         '判断如果返回的数大于零证明添加成功    
  38.         If res > 0 Then  
  39.             MsgBox("添加成功!")  
  40.         End If  
  41.         '返回这个参数    
  42.   
  43.     End Sub  
  44. End Class  
Imports System.Data.SqlClientPublic Class Form1    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        '定义一个连接数据库的字符串          Dim connStr As String        '这里是链接本地的数据库的字符串          connStr = "Data Source=lizhihua-pc;database=newssystem;uid=sa;pwd=123456"        '定义一个数据库连接的对象()        Dim conn As SqlConnection        '实现数据的连接          conn = New SqlConnection(connStr)        conn.Open()        '定义Sql语句字符串的变量          Dim sql As String        '向数据库中插入数据的Sql语句          sql = "insert into category ([name]) values (' 哈哈 ')"        '定义一个执行Sql语句的对象()        Dim res As Integer        Dim cmd As SqlCommand        cmd = New SqlCommand(sql, conn)        '目的:释放数据库连接              Using (cmd)            res = cmd.ExecuteNonQuery()        End Using        If (conn.State = ConnectionState.Closed) Then            MsgBox("对象释放成功!")        Else            MsgBox("对象释放失败!")        End If        '定义一个整数类型的变量,执行完Sql语句所影响的行数          '执行Sql语句          '判断如果返回的数大于零证明添加成功          If res > 0 Then            MsgBox("添加成功!")        End If        '返回这个参数      End SubEnd Class


 

运行的结果就是:

对象释放失败,也就是说Using释放对象的用法,根本也不能释放SqlCommand这个对象,这样的用法就是错误的。