使用 SqlDataReader 从 SQL Server 获取未知数据
本文关键字:未知 未知数 数据 获取 Server SqlDataReader SQL 使用 | 更新日期: 2023-09-27 17:55:14
我使用以下代码从SQL Server获取数据:
string rootname = "[" + nameroot + "]";
string retVal = "";
string constring = "Data Source =(Local);Initial Catalog=Tajari;Integrated Security=True;";
SqlConnection conobj = new SqlConnection(constring);
string commandtext = "select distinct " + rootname + " from TBLJobsRootName where MenuId between 1 and " + countroot + "";
SqlCommand comobj = new SqlCommand(commandtext, conobj);
conobj.Open();
SqlDataReader dr = comobj.ExecuteReader();
while (dr.Read())
{
//retVal = dr[nameroot].ToString();
}
conobj.Close();
现在我需要将此数据插入到变量或文本框中。
问题是我的价值观是未知的
解决方案 1 :
您可以使用Index
值。
试试这个:
while (dr.Read())
{
retVal = dr[0].ToString();
}
解决方案 2 :
您还可以使用别名。
string commandtext = "select distinct " + rootname + " as myrootname from
TBLJobsRootName where MenuId between 1 and " + countroot + "";
SqlCommand comobj = new SqlCommand(commandtext, conobj);
conobj.Open();
SqlDataReader dr = comobj.ExecuteReader();
while (dr.Read())
{
retVal = dr["myrootname"].ToString();
}
建议:您的查询对SQL注入攻击开放,我建议您使用参数化查询来避免它们。
解决方案 3:使用参数化查询
如果要添加所有根名称值,则需要将所有值添加到列表中。
List<string> list = new List<string>();
string commandtext = "select distinct "+rootname+" as myrootname from
TBLJobsRootName where MenuId between 1 and @countroot";
SqlCommand comobj = new SqlCommand(commandtext, conobj);
comobj.Parameters.AddWithValue("@countroot",countroot);
conobj.Open();
SqlDataReader dr = comobj.ExecuteReader();
while (dr.Read())
{
lis.Add(dr["myrootname"].ToString());
}
//You can retunrn list