如何使用c#将SQL SERVER数据库的varchar值检索到数组
本文关键字:varchar 检索 数组 数据库 何使用 SQL SERVER | 更新日期: 2023-09-27 17:53:06
我有一个数据库名称"费用",我在其中声明了不同的列,如学费、计算机费、许可费等。
现在我只想检索一个数组的tutionfee值。所以我可以在任何地方使用它。我正在使用C#
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand check = new SqlCommand("select * from fees where admno = @admno", con);
如果您知道select命令的确切行数,则可以创建一个字符串数组,并使用SqlDataReader
在循环中获取此列值。
假设您的select语句返回10行,您可以像这样使用它;
var array = new string[10];
using(var con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
using(var check = new SqlCommand("select * from fees where admno = @admno", con))
{
// Add your parameter value.
using(var reader = check.ExecuteReader())
{
int i = 0;
while(reader.Read())
{
array[i] = reader.GetString(reader.GetOrdinal("tutionfee"));
i++;
}
}
}
如果在编译时不知道数组的大小,可以先使用ExecuteScalar
和Select Count(*)...
命令来获取行数,也可以使用List<string>
。
这是我在assoc数组中找到的解决方案:
List<string> tutionfees = new List<string>();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
using (SqlCommand comm = new SqlCommand("select * from fees where admno = @admno", conn))
{
comm.Parameters.AddWithValue("@admno", "value"); //set your value
using (SqlDataReader rdr = comm.ExecuteReader())
{
while (rdr.Read())
{
tutionfees.Add(rdr["tutionfee"].ToString());
}
}
}
编辑1:资源更多、价格低廉的解决方案
编辑2:增加了设置婴儿车值的考虑因素。
SELECT CONVERT(varchar(6), tutionfee) + ',' AS 'data()'
FROM fees
FOR XML PATH('')
或
declare @ID varchar(max)=''
select @ID=@ID + Convert(varchar(6),ID) +',' from INDEXES
select @ID
使用此查询,否则即可。因此,现在您可以使用execute标量命令,返回值将是逗号分隔的列表,并使用result.split(',');
轻松转换为数组
您可以使用SqlDataReader
并遍历所有行来构建所需内容。
我更喜欢Linq
,下面的代码返回一个包含所有表数据的List
(若需要,请修改为Array
(。
using (var con = new SqlConnection(cnString))
{
using (var cmd = new SqlCommand("select * from fees where admno = @admno", con))
{
cmd.Parameters.Add("@admno", SqlDbType.Varchar, "");
using (var reader = cmd.ExecuteReader())
{
return reader.Select(r => new
{
TutionFee= r["tutionfee"] is DBNull ? null : r["tutionfee"].ToString(),
ComputerFee= r["computerfee"] is DBNull ? null : r["computerfee"].ToString(),
AdmissionFee= r["admissiofee"] is DBNull ? null : r["admissiofee"].ToString()
}).ToList();
}
}
}
所有属性都是string
类型,但如果您知道列的Type
,则可以使用它们。
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand check = new SqlCommand("select * from fees where admno = @admno", con);
SqlDataReader rdr = null;
rdr = check.ExecuteReader();
ArrayList array= new ArrayList();
while(rdr.Read())
{
array.Add(rdr["tutionfee"].ToString())
}