Лидеры рейтинга
Мастер-Эксперт
972
Мастер-Эксперт
608
Академик
353
Мастер-Эксперт
309
Профессионал
300
Профессор
96
Профессор
53
8.1.6
02.01.2021
JS: 2.2.2
CSS: 4.2.0
jQuery: 3.5.1
Создание программ на программной платформе .NET Framework и языках С# и Java.
Администратор раздела: Коцюрбенко Алексей Владимирович (Старший модератор)
|
Перейти к консультации №: |
|
Теперь такая проблема:
В одном месте своего проекта пытаюсь внести данные в базу данных:
public void AddGame(string Aht, string note, string sol, string end) { string SQL_String = "INSERT INTO Gold_Games_Table (Authors, Note, Solution, EndMessage)" + "VALUES(@Aht, @note, @sol, @end)"; OleDbCommand comm = new OleDbCommand(SQL_String, conn); OleDbParameter param1 = new OleDbParameter("@Aht", OleDbType.Char, 50); param1.Value = Aht; OleDbParameter param2 = new OleDbParameter("@note", OleDbType.Char, 50); param2.Value = note; OleDbParameter param3 = new OleDbParameter("@sol", OleDbType.Char, 360); param3.Value = sol; OleDbParameter param4 = new OleDbParameter("@end", OleDbType.Char, 50); param4.Value = end; comm.Parameters.Add(param1); comm.Parameters.Add(param2); comm.Parameters.Add(param3); comm.Parameters.Add(param4); conn.Open(); comm.Prepare(); int rows = comm.ExecuteNonQuery(); conn.Close(); }
public void AddSolution(string temp, string name, decimal val) { string SQL_String = "INSERT INTO Problems_Desposition_Table (Name, Desposition, Steps)" + "VALUES( @name , @temp , @val)"; OleDbCommand comm = new OleDbCommand(SQL_String, conn); OleDbParameter param1 = new OleDbParameter("@name", OleDbType.Char, 50); param1.Value = name; OleDbParameter param2 = new OleDbParameter("@temp", OleDbType.Char, 100); param2.Value = temp; OleDbParameter param3 = new OleDbParameter("@val", OleDbType.SmallInt, 0); param3.Value = val; comm.Parameters.Add(param1); comm.Parameters.Add(param2); comm.Parameters.Add(param3); conn.Open(); comm.Prepare(); int rows = comm.ExecuteNonQuery(); conn.Close(); }
Состояние: Консультация закрыта
Здравствуйте, Штыхов Антон Евгеньевич!
Ошибку в минифорум.
Да в этом может быть проблема.
А теперь основные рекмендации вместо OleDbType.Char используйте OleDbType.VarChar
А вообще так писать как вы написали не хорошо. Общие рекомендации. Выполняйте запрос внутри Try Catch.
conn.Open();
comm.Prepare();
int rows = comm.ExecuteNonQuery();
В этом место проверяйте что int => 1. добавьте транзакции если условие не выполнилось делайте RollBack().
![]() |
Консультировал: DrakoN Дата отправки: 05.10.2008, 02:47 |
Рейтинг ответа:
0 Сообщение модераторам Отправлять сообщения |
Здравствуйте, Штыхов Антон Евгеньевич!
Конечно желателен полный текст ошибки.
Попробуйте поменять тип для параметра param3 c
OleDbType.Char на OleDbType.WChar так как в поле memo текст сохраняется в Юникод.
А в другом примере передаете param3 decimal в SmallInt . Это тоже ошибка.
Обратите внимание.
![]() |
Консультировал: Челноков Виктор Альбертович Дата отправки: 06.10.2008, 07:05 |
Рейтинг ответа:
0 Сообщение модераторам Отправлять сообщения |
Штыхов Антон Евгеньевич
0
|
= общий = | 05.10.2008, 08:35 Вовремя выполнения у казывает на comm.Prepare(); Syntax error in INSERT INTO statement. |
DrakoN
0
|
= общий = | 05.10.2008, 08:36 удалите эту строку она там не нужна. Должно и без нее работать. |
DrakoN
0
|
= общий = | 05.10.2008, 08:37 Тогда во время выполнения если что не так вам вернет ошибку сама БД. И скажет вам что ей не понравилось. После отладки по идее можно вернуть |
DrakoN
0
|
= общий = | 05.10.2008, 08:39 ах да и еще Код :: выделить код [q=] "INSERT INTO Gold_Games_Table (Authors, Note, Solution, EndMessage)" + "VALUES(@Aht, @note, @sol, @end)";[/q] замените на Код :: выделить код [q=] "INSERT INTO Gold_Games_Table (Authors, Note, Solution, EndMessage) " + "VALUES (@Aht, @note, @sol, @end)";[/q] пробелы не помешают. |
Штыхов Антон Евгеньевич
0
|
= общий = | 05.10.2008, 10:07
|
Штыхов Антон Евгеньевич
0
|
= общий = | 05.10.2008, 16:14 Написал так: Код :: выделить код string SQL_String = "INSERT INTO Gold_Games_Table (Authors, Note, Solution, EndMessage)" + "VALUES (?, ?, ?, ?)"; OleDbCommand comm = new OleDbCommand(SQL_String, conn); OleDbParameter param1 = new OleDbParameter("@Aht", OleDbType.Char, 50); param1.Value = Aht; OleDbParameter param2 = new OleDbParameter("@note", OleDbType.Char, 50); param2.Value = note; OleDbParameter param3 = new OleDbParameter("@sol", OleDbType.VarChar, 360); param3.Value = sol; OleDbParameter param4 = new OleDbParameter("@end", OleDbType.Char, 50); param4.Value = end; comm.Parameters.Add(param1); comm.Parameters.Add(param2); comm.Parameters.Add(param3); comm.Parameters.Add(param4); try { conn.Open(); comm.Prepare(); int rows = comm.ExecuteNonQuery(); } finally { conn.Close(); } } результат тот же! ![]() |
DrakoN
0
|
= общий = | 05.10.2008, 23:47 а что в Catch пишет добавьте |
DrakoN
0
|
= общий = | 05.10.2008, 23:49 Код :: выделить код finally { conn.Close(); } это не верный код Добавьте проверку isNot = null и после закрывайте |
Штыхов Антон Евгеньевич
0
|
= общий = | 06.10.2008, 08:18 Цитата: это не верный код Добавьте проверку isNot = null и после закрывайте isNot нет такого оператора! |
Челноков Виктор Альбертович
0
|
= общий = | 06.10.2008, 09:49 Попробуйте следующий код |
DrakoN
0
|
= общий = | 06.10.2008, 14:43 isNot нет такого оператора! |
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.