Priya Karthish Ответов: 1

Проблема, связанная с текстовым типом данных SQL в C#


Я удаляю строку с некоторыми условиями(в этом случае Пользователь имеет тип varchar тип данных и Любимый это Textdatatype). Но я не знаю, что запрос на удаление не работает.

Но когда я дал данные прямо так

string delquery = "Delete from Parameter Where Group = 'Favoriten'  AND User = ?  AND Favorite Like  'DeliverySchedule'"
.Тогда мой запрос на удаление работает. Но передача с параметрами не работает. Может ли кто - нибудь помочь мне в этом вопросе?

Что я уже пробовал:

 private void deleteItem_Click(object sender, RoutedEventArgs e)
 {
            OleDbConnection oledbconn = dvxr.getconnR46D100();
            OleDbDataAdapter oleda = new OleDbDataAdapter();
            try
            {
                string username = dvxr.mDVXRT.usercode.ToString();
                string favname = dvxr.mDVXRT.favoritename.ToString();
                string delquery = "Delete from Parameter Where Group = 'Favoriten'  AND User = ?  AND Favorite Like ? ";
                OleDbCommand olecmd = new OleDbCommand(delquery, oledbconn);
                olecmd.Parameters.AddWithValue("@uid", username);
                olecmd.Parameters.AddWithValue("@fname", favname);
                oleda.DeleteCommand = olecmd;
                olecmd.ExecuteNonQuery();
                oledbconn.Close(); 
                MessageBox.Show("Favorite is Deleted");
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message);
            }

}

Richard Deeming

NB: Предполагая, что вы подключаетесь к Microsoft SQL Server, text тип был объявлен устаревшим с 2005 года и будет удален в будущей версии. Вы должны использовать varchar(max) вместо.
ntext, text и image (Transact-SQL) - SQL Server | Microsoft Docs[^]

1 Ответов

Рейтинг:
2

OriginalGriff

Мы не можем сказать: мы понятия не имеем, как выглядят ваши данные, или что username или favname содержать.

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем этого сделать для вас - пришло время освоить новый (и очень, очень полезный) навык: отладку!