【问题标题】:Returning result of SqlCommand in class返回类中SqlCommand的结果
【发布时间】:2013-08-23 17:00:59
【问题描述】:

由于我没有长时间编程,我想问你是否有办法调用这个 SqlCommand 的结果,它在名为 klientClass 的类中

我在想它可能看起来像这样:

private static void ReadFirma()
    {
        string queryString =
            "SELECT rocnik from FIRMA;";
        using (SqlConnection connection = new SqlConnection(myConnection.DataSource.ConnectionString
                   ))
        {
            SqlCommand command = new SqlCommand(
                queryString, connection);
            connection.Open();

            int result= Convert.ToInt32(command.ExecuteScalar());
            try
            {

            }
            finally
            {

                reader.Close();
            }
        }
    }

因为我需要在此处将这个结果插入到我的报告参数中:

 this.klientTableAdapter.Fill(this.prehled_zajezdu.HereReturnResult);

        this.reportViewer1.RefreshReport();

对于安静的低质量问题,我很抱歉,希望不要收到反对票。

【问题讨论】:

  • 您可以通过DataAdapter使用数据集或数据表填充。
  • 我不明白这个问题。你能更清楚一点吗?是的,你可以运行这个函数,你可以调用它,什么对你不起作用?
  • @NoIdeaForName 好吧,我不确定如何准确调用 SqlCommand 的结果,请您帮帮我吗?提前致谢。
  • 需要在哪里使用结果?您的问题缺乏描述您想要实现的目标。 TableAdapter 将 DataTable 或 DataSet 作为 Fill 方法的参数。为了获得标量,您不需要 DataReader。 ReadFirma 方法可能应该返回一些东西。

标签: c# sql sql-server winforms


【解决方案1】:

您可以将 DataTable 对象用于您的目标。

private static DataTable ReadFirma()
{
    string queryString = "SELECT rocnik from FIRMA";
    using (var connection = 
        new SqlConnection(myConnection.DataSource.ConnectionString))
    using(var command = new SqlCommand(queryString, connection))
    {
        connection.Open();
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = command;
        da.Fill(dt);
        return dt;
    }
}


void SomeMethod()
{
    this.klientTableAdapter.Fill(ReadFirma());
}

【讨论】:

    【解决方案2】:

    这是您在Fill 方法中检索和使用数据库值的方法(前提是Fill 方法采用int 类型的参数并且myConnection 字段可从静态方法获得)

    private static int ReadFirma()
    {
        string queryString = "SELECT rocnik from FIRMA";
        using (var connection = 
            new SqlConnection(myConnection.DataSource.ConnectionString))
        using(var command = new SqlCommand(queryString, connection))
        {
            connection.Open();
            return Convert.ToInt32(command.ExecuteScalar());
        }
    }
    
    
    void SomeMethod()
    {
        this.klientTableAdapter.Fill(ReadFirma());
    }
    

    【讨论】:

    • 谢谢,您完全理解我的意思,即使我描述得很糟糕。请问如何将此 ReadFirma() 称为 klint Tableadapter.Fill pleaseE 所在的另一个类?提前致谢。
    • 我知道我只将私有静态整数设置为公共静态整数。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2012-05-21
    相关资源
    最近更新 更多