Как я могу показать результат поиска в текстовом поле?

#c# #oledb

#c# #oledb

Вопрос:

Я создал код таблицы и хотел бы выполнить поиск и получить ответ, вводящий IMEI устройства в текстовом поле IMEI, и когда я нажимаю на поиск, я хочу отобразить результат code_mck в коде текстового поля, в котором я хочу отобразить результат:

 id  Imei             code_mck
1  356885021519453   830782136
2  356885021519156   948790617
3  356885021518893   715398945
4  356885021518935   567456626
5  359654022104377   557960750 
  

Изначально у меня типичная трехуровневая архитектура, и метод поиска находится на уровне данных. У меня возникли некоторые проблемы с моим SQL-запросом:

 public DataSet recherche(string code)
{
    DataSet ds = null;
    using (OleDbConnection cnn = new OleDbConnection(strConn))
    {
        cnn.Open();
        string Oledb = "SELECT * FROM Code WHERE Imei=@IMEI";
        using (OleDbDataAdapter adapter = new OleDbDataAdapter(Oledb, cnn))
        {
            adapter.SelectCommand.Parameters.AddWithValue("@IMEI", code);
            ds = new DataSet();
            adapter.Fill(ds, "Code");
        }
    }
    return ds;
}
  

Уровень бизнес-логики:

 namespace unlock2_buisness
{
    public  class code_imei

    public DataSet rechercheduCode(string imei)
    {
        unlockDAL objetDataLayer = new unlockDAL();

        if (imei == "")
            throw new Exception("merci d'indique l'imei de recherche");
        DataSet dt = null;
        dt = objetDataLayer.recherche(imei);
        return dt;
}
  

На моем пользовательском уровне текстовое поле, предназначенное для поиска, чтобы отобразить результат в коде текстового поля, не отвечает, и я не получаю соответствующий код, предоставляя IMEI устройства, как это должно быть из таблицы.

 private void btnrechercheimei_Click(object sender, EventArgs e)
{
    imeiLogic.rechercheduCode(txtimei.Text);
    imeiLogic.rechercheduCode(txtcode.Text);
}
  

Я буду признателен за вашу поддержку.

Комментарии:

1. И не могли бы вы, пожалуйста, отформатировать свой заголовок разумным образом? Это больно. Большое вам спасибо.

Ответ №1:

Проблема в том, как вы используете свой класс BusinesLogic.

public DataSet rechercheduCode(string imei) принимает строку в качестве входного параметра и возвращает DataSet.

Когда вы вызываете метод, подобный этому:

 imeiLogic.rechercheduCode(txtimei.Text);
  

вы предоставляете входной параметр (значение, которое находится в текстовом поле), но вы не сохраняете возвращенный набор данных в переменной.

В наборе данных будет таблица с именем Code, которая будет содержать строки результатов запроса или 0 строк, если ничего не найдено.

Оставаясь как можно ближе к вашей текущей реализации, я предлагаю следующее:

 private void btnrechercheimei_Click(object sender, EventArgs e)
{
    // call the BLL to get a dataset
    var dataSet = imeiLogic.rechercheduCode(txtimei.Text);
    // get our table in the dataset
    var codeTable = dataSet.Tables["Code"]; // table
    // check if there was a row returned
    if (codeTable.Rows.Count > 0)
    {
        var row = codeTable.Rows[0];  // pick the first one
        txtcode.Text = row["code_mck"].ToString();  // update our textbox 
    }    
    // Add handling for 0 rows and/or more than 1 rows returned
}