C# 如何重写此SQL查询以在小数之间进行选择?
如何重写此代码以仅显示玩家在两个文本框输入之间具有BattingAverage(decimal)值的行?此外,MinBatting(文本框)应默认设置为0.000,MaxBoting(文本框)应设置为1.000 到目前为止,我只能搜索一个数字,所有具有平均击球数的球员都会出现 这是我的代码:C# 如何重写此SQL查询以在小数之间进行选择?,c#,sql-server,datatable,C#,Sql Server,Datatable,如何重写此代码以仅显示玩家在两个文本框输入之间具有BattingAverage(decimal)值的行?此外,MinBatting(文本框)应默认设置为0.000,MaxBoting(文本框)应设置为1.000 到目前为止,我只能搜索一个数字,所有具有平均击球数的球员都会出现 这是我的代码: private void btnSearch_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection
private void btnSearch_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection();
// sql connection string
conn.ConnectionString = "Integrated
Security=true;server=LUSQL01;database=Baseball";
// sql command
string str = "SELECT * FROM [BASEBALL].[dbo].[Players] where
(BattingAverage LIKE Concat('%',@search,'%'))";
SqlCommand cmd = new SqlCommand(str, conn);
cmd.Parameters.Add("@search", SqlDbType.NVarChar).Value =
txbSearch.Text;
conn.Open();
cmd.ExecuteNonQuery();
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd;
DataTable ds = new DataTable();
adapter.Fill(ds);
playersDataGridView.DataSource = ds;
conn.Close();
}
林克替代方案
var result = from player in db.Players
where player.BattingAverage > lowestValue && player.BattingAverage < highestValue
select player;
var result=来自db.Players中的播放器
其中player.BattingAverage>最低值和&player.BattingAverage<最高值
选择玩家;
类似于此。SELECT*FROM barball.dbo.Players,其中BattingAverage-BETWEEN(minVal,MaxVal)尝试使用LINQ而不是编写SQL,您将看到语法错误,而不是依赖SQL在运行时工作。@Joagwa,好主意,那么你知道我的代码在LINQ上会是什么样子吗?作为答案发布,这样我就可以格式化代码了。我不知道您的数据结构的完整上下文,也不知道您的SQLite db是如何设置的,但是您应该能够适应。Linq中没有LIKE命令,尽管本文指出有一个SqlMethods类可以执行LIKE命令。其中fieldname“如“%value%”通常与文本字段一起使用。注意:没有错误处理,如果文本框或数据中有非浮点数据,则会导致错误。
var result = from player in db.Players
where player.BattingAverage > lowestValue && player.BattingAverage < highestValue
select player;