2011-05-03 51 views
2

考虑下面的例子:方法返回数据表使用

public static DataTable GetDataTable() 
{ 
    using(DataTable dt = new DataTable()) 
    { 
     // fill DataTable logic 
     return dt; 
    } 
} 

public void main() 
{ 
    DataTable dt = GetDataTable(); 

    // contine using dt 
} 

我应该想到“dt的”是在可用的主要()',或为数据表布置在“GetDataTable()”?

回答

7

是的,DataTable将在GetDataTable离开using块时处置。

2

必须更换

public void main() 

public static void Main() 

public static DataTable GetDataTable() 
{ 
    using(DataTable dt = new DataTable()) 
    { 
    // fill DataTable logic 
    return dt; 
    } 
} 

一旦你的代码留下GetDataTabledt将被布置。因为using调用IDisposible

5

是的,当代码退出using范围时,DataTable将被丢弃。

您应该使用移动到您的主

public static DataTable GetDataTable() 
{ 
    DataTable dt = new DataTable() 

    // fill DataTable logic 
    return dt; 
} 

public void main() 
{ 
    using(DataTable dt = GetDataTable()) 
    { 
    // contine using dt 
    }//here the table is disposed 
} 
0
public DataTable GetValue(string name) 
    { 
     string connection = @"Data Source=DESKTOP-M5TQV9A;Initial Catalog=ALLTEST;Integrated Security=True"; 
     DataTable dt; 
     SqlConnection con = new SqlConnection(connection); 
     con.Open(); 
     using (SqlCommand cmd = new SqlCommand("up_searchUsers", con)) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.Add("@SearchName", SqlDbType.VarChar).Value = name; 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      dt = new DataTable(); 
      da.Fill(dt); 
      con.Close(); 
      return dt; 
     } 
    } 
在文本框中

//搜索然后让你的结果! :) Happy C#Codding

dataGridView1.DataSource = GetValue(textBox1.Text);