[英]Calculate age when using ado.net with a sql query?
这是我的选择
using (SqlConnection con = new SqlConnection(dc.Con))
{
SqlDataAdapter da = new SqlDataAdapter(
"Select DateOfBirth FROM Patients WHERE HealthNumber='" + cmbHealthNumber.Text+ "'", con);
如何计算更改以上代码的客户年龄
我尝试过,但我从未解决过这个问题...
感谢您的帮助!
如果只需要检索一个DateTime
,为什么不使用:
string sqlStmt = "SELECT DateOfBirth FROM dbo.Patients WHERE HealthNumber = @No";
using (SqlConnection con = new SqlConnection(dc.Con))
using (SqlCommand cmd = new SqlCommand(sqlStmt, con))
{
cmd.Parameters.Add("@No", SqlDbType.VarChar, 20).Value = cmbHealthNumber.Text.Trim();
con.Open();
var result = cmd.ExecuteScalar();
DateTime dateOfBirth = Convert.ToDateTime(result);
con.Close();
}
确实没有必要为单个值而拥有SqlDataAdapter
和DataTable
或DataSet
所有麻烦。
另外: 始终使用参数化查询! - 没有例外。 防止SQL注入-您绝对不希望这样做!
尝试将查询更改为此:
Select datediff(yy, DateOfBirth, getdate()) FROM Patients WHERE HealthNumber = @HealthNumber
通过使用DateDiff方法,您可以轻松地在数据层上进行此计算。 我还在其中放置了一个变量@HealthNumber
,因为您正@HealthNumber
进行SQL注入攻击。 无论是否会发生,将值硬编码到SQL查询中都是不好的做法。
这也假设您要计算以年为单位的年龄。 如果要更精确,则可以将其更改为任何恒定值,而不是yy
。 查看上面有关DateDiff
的参考链接,以向您显示所有可能的参数配置值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.