Ошибка преобразования при записи в C # DataTable с использованием результатов выбора SQL - PullRequest
1 голос
/ 05 июля 2019

Я заполняю данные полями Date, TimeSlot, FullName и Availableablity из базы данных SQL.

У меня есть переменная private DateTime Sdate {get => dateTimePickerAppointment.Value;}, принимающая значение даты из объекта dateTimePicker.

Когда я запускаю SqlCommand для получения данных из таблицы SQL, он работает нормально, пока я не введу дату со значением дня больше 12.

Если значение дня больше 12, я получаю исключение System.Data.SqlClient.SqlException: 'Conversion failed when converting date and/or time from character string.'

Мне нужен совет, как решить эту проблему.

Я пытался использовать 'Convert' в операторе SQL SELECT для преобразования в дату и строку. Это не сработало.

Мой столбец даты в таблице SQL имеет тип: date

private DateTime Sdate {get => dateTimePickerAppointment.Value;}

case 6:
    MessageBox.Show("Specific Date required ", appSearch.ToString("X"));
    // define new SQL command cmdDB as new SQL Command (SELECT...........)
    SqlCommand cmd6 = new SqlCommand("SELECT TOP(200)Date ,[TimeSlot],[FullName],[Availability] FROM [qryGPAppointmentsSchedule] WHERE Availability IS NULL and Date = '"  + Sdate + "'", con);

    try
    {
        //define a new SQL Data Adapter sda as a new SQL Data Adapter
        SqlDataAdapter sda = new SqlDataAdapter();
        sda.SelectCommand = cmd6;// SQL Adapter selection = cmdDB


        DataTable dtAvailable = new DataTable();// defined new data table
        sda.Fill(dtAvailable);//SQL adapter is to fill dtAvailable
        dataGridViewAppointmentsAvailable.DataSource = cmd6;

        BindingSource aSource = new BindingSource();
        aSource.DataSource = dtAvailable;
        dataGridViewAppointmentsAvailable.DataSource = aSource;
        //sda.Update(dtAvailable);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

    break;

1 Ответ

2 голосов
/ 05 июля 2019

Не могли бы вы попробовать ниже код:

SqlCommand cmd6 = new SqlCommand("SELECT TOP(200)Date ,[TimeSlot],[FullName],[Availability] FROM [qryGPAppointmentsSchedule] WHERE Availability IS NULL and Date = @dateInput", con);
cmd6.Parameters.Add(new SqlParameter("@dateInput", Sdate));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...