如何将SQL结果保存到C#变量中?

时间:2011-02-18 18:24:48

标签: c# sql

我很难找到如何将SQL结果保存到String或结果返回的任何类型。

我的SQL查询是:

SELECT SUM(Length) FROM tbl_test WHERE TITLE LIKE 't%'

这里我需要一个函数来总结所有数据行的长度,其中title以字母“T”开头,当在MS-SQL中执行查询时,它返回“188.99”(SQL类型为十进制)

我的问题是,如何将该值保存到C#变量中?查询始终返回具有特定值的一行,我想将其保存到变量中。我有一个C#函数来执行查询,我只需要将该行的值188.99保存到变量中。无论我将结果保存为十进制变量还是字符串,任何建议都很酷。

3 个答案:

答案 0 :(得分:20)

尝试在准备它的SqlCommand上调用.ExecuteScalar()。 EG:

SqlConnection connection = new SqlConnection(myConnectionString);
SqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "SELECT SUM(Length) FROM tbl_test WHERE TITLE LIKE 't%'";

int result = ((int)cmd.ExecuteScalar());
connection.Close();

您可以根据需要打开和关闭SqlConnections(每次执行操作时打开和关闭SoP,或者使用相同方法打开和关闭一系列操作),因为.Net不会真正关闭连接的真实性,它'll'软关闭“它并将实时连接重新连接回连接池以便以后再循环。

答案 1 :(得分:5)

您可以使用SqlDataReader。 这是一个示例:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnectionString"].ToString());


SqlCommand read_command = new SqlCommand("SELECT SUM(Length) FROM tbl_test WHERE TITLE LIKE '@t%'", con);
        read_command.Parameters.Add("@t", SqlDbType.NVarChar).Value = Str;
        SqlDataReader read_rd;
        string SUM ;
        try
        {
            con.Open();
            read_rd = read_command.ExecuteReader();
            if (read_pass_rd.HasRows)
            {
                while (read_rd.Read())
                {
                    SUM = read_rd.GetString(0);
                }
            }
            read_rd.Close();
            con.Close();
        }
        catch (Exception)
        {
            if (con.State == ConnectionState.Open)
                con.Close();
        }

并且'Str'是一个字符串,是您搜索的字符串,'SUM'字符串就是答案。

答案 2 :(得分:0)

您需要通过一些可用的方法将C#连接到您的数据库:

  1. LinQ to SQL
  2. ADO.NET
  3. LinQ to Entities
  4. 我认为在给出实际查询的情况下,ADO.NET是最基本,最简单的方法。