gpt4 book ai didi

c# - 使用 SqlDataReader.IsDBNull 时使用列名

转载 作者:可可西里 更新时间:2023-11-01 08:04:06 25 4
gpt4 key购买 nike

我有这段代码可以从 SQL DB 中读取数据。

我不知道应该如何编辑它才能使用原始列名而不是列索引。

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

Gets the column ordinal, given the name of the column.

if (read.Read())
{
int colIndex = read.GetOrdinal("MyColumnName");
maskedTextBox2.Text = read.IsDBNull(colIndex) ?
string.Empty :
read.GetDateTime(colIndex).ToString("MM/dd/yyyy");

}

作为旁注,您的查询对 sql 注入(inject)是开放的。不要使用字符串连接来构建sql命令,而是使用参数化查询

  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())
{
......
}
}

关于c# - 使用 SqlDataReader.IsDBNull 时使用列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19058824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com