gpt4 book ai didi

c# - SqlDataReader - 语法正确,我必须对列号进行硬编码吗?

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:38 25 4
gpt4 key购买 nike

我有一个名为 testDB 的数据库,其中包含表 Versions,其中包含具有日期时间格式的列 [Release Date]

现在,我想在我的 C# Windows 服务中读取它:

protected void SqlConnect()
{
SqlCommand comSql;
DateTime relDate;
SqlDataReader myReader = null;
using (SqlConnection myConnection = new SqlConnection(_server +
_username +
_password +
"Trusted_Connection=yes;" +
"database=testDB; " +
"connection timeout=30"))
{
try
{
myConnection.Open();
comSql = new SqlCommand("select [Release Date] from dbo.Version",
myConnection);
myReader = comSql.ExecuteReader();
while (myReader.Read())
{
//Here's my problem, explained below
}
}
catch
{

}
finally
{
if (myReader != null) myReader.Close();
}

}

}

现在,我想将存储在该列中的值分配给 relDate 变量。然而

relDate = myReader.GetDateTime();

要求 GetDateTime 将列号传递到那里(如果我理解正确的话)。但我已经在我的 comSql 中选择了列。这是处理这个问题的正确方法吗,即。只是将列号放在代码中?

编辑:好的,根据答案判断,我可能会说这个问题是错误的。

我知道我必须将列索引传递给 GetDateTime()。我问是否有一种方法可以做到这一点而无需像 GetDateTime(0) 那样对其进行硬编码。

最佳答案

您可以在数据读取器上使用 GetOrdinal 方法从列的字符串名称中获取列的序号。这样,您就不必对列索引进行硬编码。

当您在循环中从数据读取器读取数据时,GetOrdinal 也很有用。您可以在循环开始之前初始化索引变量,然后在循环的每次迭代中使用它。

关于c# - SqlDataReader - 语法正确,我必须对列号进行硬编码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31696200/

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