Как получить несколько строковых значений взамен в формах c # windows - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь получить несколько значений из базы данных в ответ, я пишу код, и он возвращает мне только одно значение, но я хочу, чтобы все значения возвращались. я не знал, как решить это, потому что я новичок в 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);
    }

вот полный код

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

У вас должен быть метод, который возвращает весь SVE, извлеченный из базы данных, с конкретным SVCode.

Обратите внимание, что я предполагаю, что 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;
}
0 голосов
/ 03 апреля 2019

Может быть, вам нужно вернуть массив (или список) строк?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...