Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用c将SQL SERVER数据库的varchar值检索到数组_C#_Asp.net_Sql Server - Fatal编程技术网

C# 如何使用c将SQL SERVER数据库的varchar值检索到数组

C# 如何使用c将SQL SERVER数据库的varchar值检索到数组,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我有一个数据库的名称费用,我已经宣布了不同的栏目说,监护费,电脑费,受理费等 现在我只想检索数组中tutionfee的值。所以我可以在任何地方使用它。我用的是C SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); SqlCommand check = new SqlCommand("select * from fees

我有一个数据库的名称费用,我已经宣布了不同的栏目说,监护费,电脑费,受理费等

现在我只想检索数组中tutionfee的值。所以我可以在任何地方使用它。我用的是C

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand check = new SqlCommand("select * from fees where admno = @admno", con);

如果您知道select命令的确切行数,则可以创建一个字符串数组,并使用它在循环中获取此列值

假设您的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++;
       }
    }
}

如果在编译时不知道数组大小,可以使用Select Count*。。。命令首先获取行数,或者您可以使用List代替。

如果您知道select命令的确切行数,则可以创建字符串数组并使用在循环中获取此列值

假设您的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++;
       }
    }
}

如果在编译时不知道数组大小,可以使用Select Count*。。。命令以首先获取行计数,或者您可以使用列表来代替。

这是我在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:增加了设置prameter值的注意事项。

这是我在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());
        }
    }
}
        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())

            }
编辑1:资源更便宜的解决方案。 编辑2:增加了设置prameter值的注意事项。

您可以使用SqlDataReader并循环所有行来构造所需的内容

        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())

            }
我更喜欢Linq,若需要,下面的代码将返回一个列表,并修改为包含所有表数据的数组

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();

        }
    }
}
所有属性都是字符串类型,但如果您知道列的类型,则可以使用它们。

您可以使用SqlDataReader并循环所有行来构造所需的内容

SELECT CONVERT(varchar(6), tutionfee) + ',' AS 'data()' 
FROM fees
FOR XML PATH('')
我更喜欢Linq,若需要,下面的代码将返回一个列表,并修改为包含所有表数据的数组

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();

        }
    }
}
所有属性都是字符串类型,但如果知道列的类型,则可以使用它们

SELECT CONVERT(varchar(6), tutionfee) + ',' AS 'data()' 
FROM fees
FOR XML PATH('')

使用此查询,否则就可以了。现在您可以使用executescalar命令,返回值将是逗号分隔的列表,并使用result.split','轻松转换为数组



使用此查询,否则就可以了。现在您可以使用executescalar命令,返回值将是逗号分隔的列表,并使用result.split','轻松转换为数组

使用SqlCommand.ExecuteScalar方法并更改您的查询以仅返回tutionfee,如下所示:从费用中选择tutionfee,其中admno=@admnocollect数据表中的查询信息,并循环该数据表并将其分配到arrayuse SqlCommand.ExecuteScalar方法,并更改您的查询以仅返回tutionfee,如下所示:选择tutionfee从费用中,admno=@admnocollect在数据表中收集查询信息并循环该数据表并将其分配到arrayuse SqlCommand.ExecuteScalar方法中,并将查询更改为仅返回tutionfee,如下所示:从费用中,admno=@admnocollect在数据表中选择tutionfee并循环该数据表并分配这些信息我知道泛型集合更好,但不知道他对泛型有想法,这就是我给他simpest代码的原因我知道泛型集合更好,但不知道他对泛型有想法,这就是我给他simpest代码的原因我知道泛型集合更好,但不知道他对泛型有想法,这就是我给他的原因simpest code..此解决方案是好的,但不是好的,因为您假定了列索引。因为您没有正确释放资源。此解决方案是好的,但不是好的,因为您假定了列索引。因为您没有正确释放资源。此解决方案是好的,但不是好的,因为您假定了列索引。因为您没有正确释放资源。打开连接是不必要的,因为SqlDataReader会自动执行此操作。打开连接是不必要的,因为SqlDataReader会自动执行此操作。打开连接是不必要的,因为SqlDataReader会自动执行此操作。