使用 SqlDataReader.IsDBNull 时使用列名

编程入门 行业动态 更新时间:2024-10-25 18:23:35
本文介绍了使用 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:关键词]

本文发布于:2023-04-25 11:20:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1115321.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:SqlDataReader   IsDBNull

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!