我如何从特定列的第一个 table 单元格中获取单个值

How do i get single value from first table cell of particular column

我想将 eurvalue 变量设置为等于 AvailableMoney table 中第一个单元格的值,列 EUR 这个我试过了

float eurvalue;
            string connectionString = @"Data Source=C:\Users\FluksikartoN\Documents\BFDB.sdf;Password=Corocoro93!";
            string sql = "SELECT EUR FROM AvailableMoney";
            using (SqlCeConnection conn = new SqlCeConnection(connectionString))
            {
                conn.Open();
                using (SqlCeCommand cmd = new SqlCeCommand(sql, conn))
                {
                    eurvalue = (float)cmd.ExecuteScalar();
                    //cmd.Parameters.AddWithValue("@valueeur", value);                   
                   // cmd.ExecuteNonQuery();
                }
            }
            label2.Text = eurvalue.ToString();

使用 ExecuteReader instead ExecuteScalar. The method ExecuteReader returns a SqlCeDataReader 允许从数据源读取只进行流。

        float eurvalue = 0.0f;
        string connectionString = @"Data Source=C:\Users\FluksikartoN\Documents\BFDB.sdf;Password=Corocoro93!";
        string sql = "SELECT TOP 1 EUR FROM AvailableMoney";
        using (SqlCeConnection conn = new SqlCeConnection(connectionString))
        {
            conn.Open();
            using (SqlCeCommand cmd = new SqlCeCommand(sql, conn))
            {
                using(var reader = cmd.ExecuteReader())
                {
                    if(reader.Read())
                    {
                        eurvalue = reader.GetFloat(0);
                    }
                }
            }
        }
        label2.Text = eurvalue.ToString();

一切都是关于稳健的错误和空值检查。

顺便说一句,float 通常是 currency/money 的不良数据类型,因为它会失去精度。我不知道 SQL Server CE 提供什么,但如果可以的话,请使用十进制类型。

using (SqlCeCommand cmd = new SqlCeCommand(sql, conn))
{
   object val = cmd.ExecuteScalar();
   if(val != null) 
   {
      if(float.TryParse(val.ToString(), out eurvalue))
      {
         label2.Text = eurvalue.ToString();
      }
   }       
}