2015-12-17 75 views
0

我對C#很新,但我需要將兩列(balance & withdraw)的結果從SQL Server數據庫表保存到C#變量中。我已經讀過,你應該使用SqlDataReader然後其他事情都說不,並使用ExecuteScalar,我真的很困惑這一切。將int從SQL Server數據庫保存到c#變量

這是我所知道的代碼。任何幫助表示感謝。

private void subwithdraw_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(@"Data Source=Student04\SQLEXPRESS;Initial Catalog=ATMdata;Integrated Security=True"); 
    SqlCommand cmd = new SqlCommand("Command String", con); 
    SqlDataReader rdr = null; 

    try 
    { 
     using (var check_balance = con.CreateCommand()) 
     using (var edit_balance = con.CreateCommand()) 
     using (var edit_withdraw = con.CreateCommand()) 
     { 
      check_balance.CommandText = @"select Balance, Withdraw 
              from Cust_details 
              Where Account_num ='" + show.AccNo + "' "; 
     } 
    } 
} 
+1

從您的數據庫名稱ATMData判斷,安全性會成爲問題(如果您是學生)。您的查詢容易受SQL注入影響,您應該使用參數化查詢。 – HoneyBadger

+0

「平衡」和「撤回」列的類型是什麼? –

+0

感謝您閱讀參數化查詢,並且這兩列都是整數 – IdontHaveAClue

回答

2

假設查詢返回一行,您可以使用ExecuteReader method作爲生成它們;

using(var rdr = check_balance.ExecuteReader()) 
{ 
    while(rdr.Read()) 
    { 
     int balance = rdr.GetInt32(0); 
     int withdraw= rdr.GetInt32(1); 
    } 
} 

ExecuteScalar將不適合你的情況,因爲它返回查詢的第一行的第一列。其他列被忽略。

但更重要的是,您應該始終使用parameterized queries。這種字符串連接對於SQL Injection攻擊是開放的。

相關問題