我有一个数据库名称“费用”,我已经声明了不同的列说tutionfee,计算机费用,admissiofee等。
现在我只想将tutionfee的值检索到数组。所以我可以在任何地方使用它。我正在使用C#
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand check = new SqlCommand("select * from fees where admno = @admno", con);
答案 0 :(得分:1)
如果您知道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>
。
答案 1 :(得分:0)
这是我在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 :添加了设置参数值的注意事项。
答案 2 :(得分:0)
您可以使用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
,则可以使用它们。
答案 3 :(得分:0)
SELECT CONVERT(varchar(6), tutionfee) + ',' AS 'data()'
FROM fees
FOR XML PATH('')
OR
declare @ID varchar(max)=''
select @ID=@ID + Convert(varchar(6),ID) +',' from INDEXES
select @ID
使用此查询其他没问题。所以现在你可以使用execute scalar命令,返回值将是逗号分隔列表,并使用result.split(',');
轻松转换为数组
答案 4 :(得分:-1)
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())
}