【问题标题】:How to Store data from database table in multiple variables?如何将数据库表中的数据存储在多个变量中?
【发布时间】:2015-02-27 15:15:25
【问题描述】:

正确的语法是什么?我的试用:

public void CalculateFRDBToks(TestBLL testToks)
{
    try
    {
        con.Open();
        cmd = new SqlCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = ("Select @Freq12, @Freq20, @Freq9, @Freq11 FROM TOKS_Test");
        cmd.Parameters.AddWithValue("@Freq12", testToks.freq12);//<--variable
        cmd.Parameters.AddWithValue("@Freq20", testToks.freq20);<--variable
        cmd.Parameters.AddWithValue("@Freq9", testToks.freq11);<--variable
        cmd.Parameters.AddWithValue("@Freq11", testToks.freq9);<--variable
        SqlDataReader dr = cmd.ExecuteReader();
        cmd.ExecuteNonQuery();
        con.Close();
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

将未设置为对象实例的对象引用提供给对象。

【问题讨论】:

  • 虽然是NRE,但问题是SQL和参数使用错误。
  • 哪一行实际上是在抛出错误? con 在哪里实例化?您正在将参数放在 sql 语句的选择部分中,因此充其量您只会简单地取回您输入的值。它不会将其存储在数据库中。我确定还有其他问题...

标签: c# sql select


【解决方案1】:

虽然是NRE,但问题是SQL和参数使用错误。


当您必须将某些内容传递给查询时使用参数,例如,如果您想根据代码中的值搜索特定列,然后传递参数并在WHERE 子句中使用它。

在您的代码中,您似乎只是在没有任何条件的情况下从表中选择某些列。 您必须指定列名

喜欢:

cmd.CommandText = ("Select ID, Name, Col3, Col4 FROM TOKS_Test");

您的代码中几乎没有其他内容:

  • 您尚未将连接对象附加到您的命令对象中
  • SqlConnectionSqlCommand 对象包含在using 语句中
  • 使用ExecuteReader,因为您将从查询中获取/期望多个值。

类似:

public void CalculateFRDBToks(TestBLL testToks)
{
    try
    {
        using (SqlConnection con = new SqlConnection("Connection String"))
        using (SqlCommand cmd = new SqlCommand("SELECT col1, col2, col3 FROM TOKS_TEST", con))
        {
            con.Open();
            cmd.CommandType = CommandType.Text;
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                Console.WriteLine("Col1 {0}, Col2 {1}, Col3 {2}", dr["Col1"], dr["Col2"], dr["Col3"]);
                //or populate a List of your object based on values
            }
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

查看SqlParameter的这个问题:Why do we always prefer using parameters in SQL statements?

【讨论】:

  • 感谢您的回复,但仍然没有说明如何将检索到的数据存储在变量中。
  • @CookieDemon,根据您的查询创建一个具有您期望具有的属性的类。创建一个List&lt;ThatClass&gt; 并向其中添加项目。
  • 为什么要列出?我不能只在变量中使用它吗?
  • @CookieDemon,当然你可以使用变量,但是如果你期望多个值/行,你不能把所有的值都保存在一组变量中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
相关资源
最近更新 更多