我想将eurvalue变量设置为等于AvailableMoney表格中第一个单元格的值,列为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();
答案 0 :(得分:1)
使用ExecuteReader
代替ExecuteScalar
。方法ExecuteReader
返回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();
答案 1 :(得分:1)
完全是关于强大的错误和空检查。
顺便说一下,float
通常是货币/货币的不良数据类型,因为它会失去精确度。我不知道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();
}
}
}