2011-05-03 64 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);