Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2011, 14:32   #1
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию Запись в локальную б/д access данных из формы

Доброго времени суток! Проблема следующая. Создаю интерфейс пользователя, нужно чтобы введенные в форму данные записывались в соответсвующую таблицу базы, при нажатии на кнопку save, база локальная access, связь через Microsoft.Jet.OLEDB.4.0. Написал следующий код:
Код:
 private void Save_Click(object sender, EventArgs e)
        {             
            string connectionString =
                "provider=Microsoft.Jet.OLEDB.4.0;" +
                "data source=C:\\Documents and Settings\\xxx\\Мои документы\\xxx.mdb";
            OleDbConnection myOleDbConnection = new OleDbConnection(connectionString);

            OleDbCommand myOleDbCommand = myOleDbConnection.CreateCommand();
            myOleDbCommand.CommandText = "INSERT INTO dossier" +
                "(Numero_de_dossier, Date_de_dossier, Marque, Version, Finition, Porte, Couler,Dat_Mec, Kilometrage, Immatriculation, TVA, Option, Prix, Etat)" +
"VALUES(CodetextBox, MarquetextBox, VersiontextBox, FinitiontextBox, PortetextBox, CoulertextBox, DatMectextBox, KilometragetextBox, ImmatriculationtextBox,TvatextBox,OptiontextBox,PrixtextBox,EtatlistBox)";    
            myOleDbConnection.Open();

             myOleDbCommand.ExecuteNonQuery();
          
            Close();
          
        }
В итоге, при выполнении, когда нажимаю save, выдает: Ошибка синтаксиса в инструкции INSERT INTO. Пробовал читать данные из базы, читает без проблем. А вот с записью.... Видно что-то напортачил... или чего-то не до понял. Прошу помочь начинающему С#, пожалуйста!
Буду рад любым подсказкам! Заранее благодарен.
maryan.vetrov вне форума Ответить с цитированием
Старый 13.02.2011, 15:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Правильно выдает.
Что такое
Цитата:
CodetextBox, MarquetextBox,...
и иже с ними?
Что ты хочешь писать в базу и откуда данные для новой записи берутся?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.02.2011, 16:36   #3
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Правильно выдает.
Что такое
и иже с ними?
Что ты хочешь писать в базу и откуда данные для новой записи берутся?
Тут я лохонулся, все верно. Данные должны браться из полей формы. Но меня смущает другое, я вписываю данные в запрос в ручную, вместо этих texbox - ов, ошибка таже!???
maryan.vetrov вне форума Ответить с цитированием
Старый 13.02.2011, 17:21   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ессно та же )))
Лохонулся но выводы не сделал. строковые параметры запроса должны быть заключены в ковычки, в твоем случае в одинарные
Код:
VALUES('CodetextBox', 'MarquetextBox',...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.02.2011, 17:35   #5
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
VALUES('CodetextBox', 'MarquetextBox',...
Спасибо за участие!
Но нет, не в кавычках дело, вернее не только в них, кавычки проставил, результат тот же!?
maryan.vetrov вне форума Ответить с цитированием
Старый 13.02.2011, 18:05   #6
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

Опять лоханулся. Но, во время разобрался!
Значит первое, это естественно кавычки, а второе, в списке полей таблицы в запросе присутвовало зарезервированное слово Option, заменил на Options, все заработало.
Благодарю, за помощь и внимание.
maryan.vetrov вне форума Ответить с цитированием
Старый 13.02.2011, 18:31   #7
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

Возник новый вопрос. Как правильно записать запрос, чтобы данные в него попали из полей формы, из texbox-ов, я присваиваю данные из текстбоксов переменным, но помещая переменные в запрос так как есть, они же, эти переменные и заносятся в базу, а не их значения??? Тут уже дело не в кавычках?
maryan.vetrov вне форума Ответить с цитированием
Старый 13.02.2011, 21:46   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Как правильно записать запрос, чтобы данные в него попали из полей формы, из texbox-ов, я присваиваю данные из текстбоксов переменным,
есть два способа решения (покажу на примере ОДНОЙ переменной.
1) подставляем значения прямо в запрос.
Код:
myOleDbCommand.CommandText = "INSERT INTO dossier " +
                "(Numero_de_dossier, ...)" + "VALUES ('" +CodetextBox.Text+"'"+....+")";
при этом не забываем, текстовые данные брать в кавычки, данные, типа DATE - либо тоже в кавычки (неявное преобразование типов будет в запросе), либо в #...# - почитайте, как задаются константы типа Data в Access...

2) использовать параметрический запрос.
Код:
            myOleDbCommand.CommandText = "INSERT INTO dossier " +
                "(Numero_de_dossier, ...)" + " VALUES (@pNumText, ... )";

            myOleDbConnection.Open();

              
            OleDbParameter param = new OleDbParameter();
            param = myOleDbCommand.Parameters.Add(new OleDbParameter("@pNumText", OleDbType.VarChar, 20));
            param.Direction = ParameterDirection.Input;
            param.Value = CodetextBox.Text;

            myOleDbCommand.ExecuteNonQuery();
пишу прямо в браузере, разумеется, показан общий подход,
поэтому приведённый код не сработает - нужна доводка напильником...

намного лучше использовать подход с параметрическим запросом!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.02.2011, 03:10   #9
maryan.vetrov
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 75
По умолчанию

[QUOTE=Serge_Bliznykov;734916]есть два способа решения (покажу на примере ОДНОЙ переменной...
QUOTE]
Большое спасибо, разобрался!
maryan.vetrov вне форума Ответить с цитированием
Старый 19.04.2012, 19:13   #10
*Little*
Новичок
Джуниор
 
Регистрация: 19.04.2012
Сообщений: 2
По умолчанию

Вообщем я во всём этом новенькая,так вот,сделала все вышеперечисленные действия по добавлению записи из формы в таблицу, однако у меня выбивает ошибку типо нераспазнаваемый формат БД.Что мне нужно изменить в самом запросе,чтоб данные заносились в таблицу БД с расширением accdb??
*Little* вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись данных в БД c формы insense БД в Delphi 6 17.06.2010 09:56
MS Access вывод отчёта на основе данных формы katrina-n Помощь студентам 0 29.11.2009 18:40
Доступ к базе ACCESS через локальную сеть St.Pavlent1y БД в Delphi 6 21.09.2009 11:20
Access 97, открыть базу данных Access alexhol Microsoft Office Access 0 27.04.2009 12:10
Запись данных в фаил из web формы Черничный PHP 3 23.08.2008 23:08