正在将int从SQL Server数据库保存到c#变量

本文关键字:保存 数据库 变量 Server SQL int | 更新日期: 2023-09-27 18:27:19

我对C#很陌生,但我需要将SQL Server数据库表中两列(balancewithdraw)的结果保存到C#变量中。我读到你应该使用SqlDataReader,然后其他人说不要使用ExecuteScalar,我真的很困惑。

这是我迄今为止的代码。感谢您的帮助。

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 + "'  ";
        }
    }
}

正在将int从SQL Server数据库保存到c#变量

I假设您的查询返回一行,您可以使用ExecuteReader方法生成它们;

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

ExecuteScalar不适合您的情况,因为它返回查询第一行的第一列。其他列将被忽略。

但更重要的是,您应该始终使用参数化查询。这种字符串串联对SQL注入攻击是开放的。