2014-07-12 56 views
0

我的概念是,例如here[COU] =45,然後進度條加載該計數,並希望顯示已成功完成。 但我沒有得到進展simultaneosly與計數在這裏工作並沒有顯示消息還,請幫我做的,我的代碼如下所示如何使用值來處理progressbar?

public void proget() 
{   
    System.Data.DataRowView selectedFile = 
          (System.Data.DataRowView)dataGrid1.SelectedItems[i]; 
    string iid = Convert.ToString(selectedFile.Row.ItemArray[10]); 
    SqlConnection con = new SqlConnection("Data Source=TNT3FMR\\SQLEXPRESS;Initial Catalog=xxx;Integrated Security=True"); 
    string query = "SELECT [COU] FROM _Count_Series WHERE STUID='"+iid+"'"; 
    SqlCommand cmd = new SqlCommand(query, con); 
    con.Open();     
    SqlDataReader rdr = cmd.ExecuteReader(); 
    while (rdr.Read()) 
    { 
     progressBar1.Value++; 
    } 

    MessageBox.Show("Completed Successfully"); 
} 
+0

幫我找忙做 – KesavuMenon

回答

2

我不知道你的設計是正確的。最佳實踐表示您應該儘快在相關場景中關閉數據庫連接。這意味着首先讀取數據並在處理之前丟棄閱讀器。你對我有點奇怪。

我在你的代碼中發現的一個問題是,你通過連接字符串來動態構建查詢。這會向您提供SQL注入攻擊。您應該使用參數化查詢。

另一個問題是您沒有使用「使用模式」。如果連接時出現錯誤會發生什麼?連接資源如何發佈?

從我個人的經驗來看,當我訪問一個數據庫時,我以異步方式進行操作,並將progressBar設置爲不確定狀態,因爲我不知道讀取數據需要多少時間。你的代碼是同步的。這可能是您的用戶界面無法正確更新的原因之一。

希望這可以幫助

+0

它的工作原理,但進度條不適用於數據發送 – KesavuMenon