如何在公式中使用 SQL 值
本文关键字:SQL | 更新日期: 2023-09-27 18:18:20
我有一个 C# winform 应用程序,其中包含一个公式。公式工作正常,但根据 SQL 表中的 id,公式中的数字可能会更改。
我怎样才能做到这一点?
我拥有的代码是:
private void button1_Click(object sender, EventArgs e)
{
decimal ufa1;
decimal aav1;
decimal uft1;
ufa1 = uft1 * aav1 * VALUE FROM SQL;
}
我有一个以前的查询,它获得了我想要的值,但我无法将其集成到公式中。
获取 id 的代码是:
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select prumos from dbo.modelos where id = '"+id+"'";
SqlDataReader dr = cmd.ExecuteReader();
新代码:由于依赖关系,我不得不将 select from id 更改为名为"prumos"的列,其整数值就像 id 一样,但它不会运行。
con.Open();
using (SqlCommand cmd = new SqlCommand("select prumos from dbo.modelos where prumos = @prumos", con))
{
cmd.Parameters.Add(new SqlParameter("prumos", prumos));
ValueFromDB = decimal.Parse(cmd.ExecuteScalar().ToString());
}
有什么解决办法吗?
无需使用 DataReader,只需读取 以标量形式执行命令:
你可以做这样的事情:
public int GetValue(int id)
{
....
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select top 1 prumos from dbo.modelos where id = '"+id+"'";
int value = int.Parse(cmd.ExecuteScalar().ToString());
return value;
}
然后:
private void button1_Click(object sender, EventArgs e)
{
decimal ufa1;
decimal aav1;
decimal uft1;
ufa1 = uft1 * aav1 * GetValue(1);
}
请注意,如果需要将 Id 发送到 GetValue()
函数,可以将其作为参数发送。
private void button1_Click(object sender, EventArgs e)
{
decimal ufa1;
decimal aav1;
decimal uft1;
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select prumos from dbo.modelos where id = '"+id+"'";
//SqlDataReader dr = cmd.ExecuteReader();
//decimal ValueFromDB = (decimal)cmd.ExecuteScalar();
decimal ValueFromDB = Decimal.Parse(cmd.ExecuteScalar().ToString());
ufa1 = uft1 * aav1 * ValueFromDB ;
}
<小时 />甚至更好:
private void button1_Click(object sender, EventArgs e)
{
decimal ufa1;
decimal aav1;
decimal uft1;
decimal ValueFromDB;
using (SqlCommand cmd = new SqlCommand("select prumos from dbo.modelos where id = @ID", con))
{
cmd.Parameters.Add(new SqlParameter("ID", id));
ValueFromDB = Decimal.Parse(cmd.ExecuteScalar().ToString());
}
ufa1 = uft1 * aav1 * ValueFromDB;
}