本文介绍了使用 SqlDataReader.IsDBNull 时使用列名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
限时送ChatGPT账号..你好,我有这个从 SQL DB 读取数据的代码.
Hello I have got this code which reads data from SQL DB.
我不知道应该如何编辑它以便我可以使用原始列名而不是列索引.
I don't know how should I edit it so I can use original column name and not column index.
string query = "SELECT * FROM zajezd WHERE event='" + thisrow+ "' AND year='" + klientClass.Year() + "'";
SqlCommand cmd= new SqlCommand(query, spojeni);
spojeni.Open();
SqlDataReader read= cmd.ExecuteReader();
if (read.Read())
{
maskedTextBox2.Text = read.IsDBNull(24) ?
string.Empty :
read.GetDateTime(24).ToString("MM/dd/yyyy");
提前致谢.
推荐答案
您正在寻找 SqlDataReader.GetOrdinal
根据 MSDN
根据列名获取列序号.
if (read.Read())
{
int colIndex = read.GetOrdinal("MyColumnName");
maskedTextBox2.Text = read.IsDBNull(colIndex) ?
string.Empty :
read.GetDateTime(colIndex).ToString("MM/dd/yyyy");
}
作为旁注,您的查询对 sql 注入是开放的.不要使用字符串连接来构建 sql 命令,而是使用参数化查询
As a side note, your query is open to sql injection. Do not use a string concatenation to build a sql command but use a parameterized query
string query = "SELECT * FROM zajezd WHERE event=@p1 AND year=@p2";
using(SqlCommand cmd= new SqlCommand(query, spojeni))
{
spojeni.Open();
cmd.Parameters.AddWithValue("@p1",thisrow);
cmd.Parameters.AddWithValue("@p2",klientClass.Year().ToString());
using(SqlDataReader read= cmd.ExecuteReader())
{
......
}
}
这篇关于使用 SqlDataReader.IsDBNull 时使用列名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
更多推荐
[db:关键词]
发布评论