【问题标题】:How to get multiple string values in return in c# windows forms如何在 c# windows 窗体中返回多个字符串值
【发布时间】:2019-04-03 16:27:30
【问题描述】:

我试图从数据库中获取多个值作为回报,我编写了一个代码,它只返回一个值,但我想要所有值作为回报。我不知道如何解决它,因为我是 C# 的初学者。这是代码

    string CommandText = "SELECT * FROM SV WHERE [SVCode]=@id";
            using (SQLiteCommand cmd = new SQLiteCommand(CommandText, conn))
            {
                cmd.Parameters.AddWithValue("@id", sve.SVID);
                conn.Open();
                DataTable dt = new DataTable();
                SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
                da.Fill(dt);
                foreach (DataRow dr in dt.Rows)
                {
                    sve.SVName = dr["SVName"].ToString();
                    sve.SVCity = dr["SVCity"].ToString();
                    sve.SVState = dr["SVState"].ToString();
                    sve.SVEmail = dr["SVEmail"].ToString();
                    sve.SVWebsite = dr["SVWebsite"].ToString();
                    sve.SVAddress = dr["SVAddress"].ToString();
                    sve.SVNote = dr["SVNote"].ToString();
                }
                return sve.SVName; //how to return SVCity,SVState,SVEmail,SVWebsite,SVAddress,SVNote
            }


    private string SVCB(){
            SVE sve = new SVE();
            sve.SVID = MSVD_vendorcode.SelectedItem.ToString();
            sve.SVName = MSVD_vendorname.Text;
            sve.SVCity = MSVD_vendorcity.Text;
            sve.SVState = MSVD_vendorstate.Text;
            sve.SVEmail = MSVD_vendoremail.Text;
            sve.SVWebsite = MSVD_vendorwebsite.Text;
            sve.SVAddress = MSVD_vendoraddress.Text;
            sve.SVNote = MSVD_vendornote.Text;

            SVSCB sv = new SVSCB();
            return sv.SVCBSI(sve);}

    private void SVcode_SelectedIndexChanged(object sender, EventArgs e)
    {
        MSVname.Text = SVCB();
        MSVcity.Text = SVCB();
        MSVstate.Text = SVCB();
        MSVemail.Text = SVCB();
        MSVwebsite.Text = SVCB();
        MSVaddress.Text = SVCB();
        MSVnote.Text = SVCB();
    }

此代码有效,但在每个文本框中仅显示一个 SVName 值。

更新!!

    public static string SV_CBSI(SVE sve)
    {
        using (SQLiteConnection conn = new SQLiteConnection(DatabaseConnection.ConnectionString()))
        {
            string CommandText = "SELECT * FROM SV WHERE [SVCode]=@id";
            using (SQLiteCommand cmd = new SQLiteCommand(CommandText, conn))
            {
                cmd.Parameters.AddWithValue("@id", sve.SVID);
                conn.Open();
                DataTable dt = new DataTable();
                SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
                da.Fill(dt);
                foreach (DataRow dr in dt.Rows)
                {
                    sve.SVName = dr["SVName"].ToString();
                    sve.SVCity = dr["SVCity"].ToString();
                    sve.SVState = dr["SVState"].ToString();
                    sve.SVEmail = dr["SVEmail"].ToString();
                    sve.SVWebsite = dr["SVWebsite"].ToString();
                    sve.SVAddress = dr["SVAddress"].ToString();
                    sve.SVNote = dr["SVNote"].ToString();
                }
                return sve.SVName; //how to return SVCity,SVState,SVEmail,SVWebsite,SVAddress,SVNote
            }
        }
    }

    public static string SVCBSI(SVE sve)
    {
        return SVWCB.SV_CBSI(sve);
    }

这里是完整的代码

【问题讨论】:

  • 是的 id 是唯一的。
  • 您应该返回 sve 而不是 sve 的单个属性。请显示该sql方法中的所有代码
  • 所有代码更新

标签: c# database winforms sqlite combobox


【解决方案1】:

你需要有一个方法来返回从数据库中检索到的给定特定 SVCode 的整个 SVE。

请注意,我认为 SVCode 是一个整数。如果不相应更改此方法的输入类型

public SVE SV_CBSI(int id)
{
    SVE localSve = new SVE();
    string CommandText = "SELECT * FROM SV WHERE [SVCode]=@id";
    using (SQLiteCommand cmd = new SQLiteCommand(CommandText, conn))
    {
        cmd.Parameters.AddWithValue("@id", id);
        conn.Open();
        DataTable dt = new DataTable();
        SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
        da.Fill(dt);
        if(dt.Rows.Count > 0)
        {
            localSve.SVName = dr["SVName"].ToString();
            localSve.SVCity = dr["SVCity"].ToString();
            localSve.SVState = dr["SVState"].ToString();
            localSve.SVEmail = dr["SVEmail"].ToString();
            localSve.SVWebsite = dr["SVWebsite"].ToString();
            localSve.SVAddress = dr["SVAddress"].ToString();
            localSve.SVNote = dr["SVNote"].ToString();
        }
        return localSve;
    }
}

现在您可以调用此方法并取回对填充了您的数据的 SVE 实例的引用。

private void SVcode_SelectedIndexChanged(object sender, EventArgs e)
{
    SVE currentSVE = SV_CBSI(Convert.ToInt32(SVCode.SelectedItem))
    MSVname.Text = currentSVE.SVName;
    MSVcity.Text = currentSVE.SVCity;
    MSVstate.Text = currentSVE.State;
    MSVemail.Text = currentSVE.SVEmail;
    MSVwebsite.Text = currentSVE.SVWebsite;
    MSVaddress.Text = currentSVE.SVAddress;
    MSVnote.Text = currentSVE.SVNote;
}

【讨论】:

  • 你能告诉我什么是 GetSVE 吗?
  • 什么错误?请解释收到的确切错误消息。
【解决方案2】:

您可能需要返回一个字符串数组(或列表)吗?

【讨论】:

  • 但是我如何使用 arry 或列表
  • 你需要:private string[] SVCB(){... return ...[]}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 2016-03-22
  • 2019-12-28
  • 2014-12-16
  • 1970-01-01
相关资源
最近更新 更多