Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

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

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

Ответ
 
Опции темы
Старый 28.03.2016, 09:16   #1
elaxblackfox
 
Регистрация: 09.06.2014
Сообщений: 9
Репутация: 10
Восклицание VS C++/CLI добавить данные в бд запросом

Доброго времени суток.
Проблема такая, создаю проект С++/CLI в vs 2008 т.к. там работает Ctrl+пробел для подсказок. Мне необходимо данные с textbox-ов занести в базу данных Аксесс. Форму и элементы на ней создаю с помощью графических средств. Подключаю oleDbDataAdapter1 и там же настраиваю oleDbConnection1 путь к своей бд.
Это создаёт мастер:
Код HTML:
this->components = (gcnew System::ComponentModel::Container());
            System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
            this->oleDbConnection1 = (gcnew System::Data::OleDb::OleDbConnection());
// oleDbConnection1
            // 
            this->oleDbConnection1->ConnectionString = L"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\Rabota\\Mydb.accdb";
            // 
// oleDbInsertCommand1
            // 
            this->oleDbInsertCommand1->CommandText = L"INSERT INTO `tbl_j_product` (`Название`, `Цена`, `характеристики`) VALUES (\?, \?, " 
                L"\?)";
Я по нашёл различные варианты на С# и пытался их переписать на С++ В шарпе "." а в С++ "->" и другие мелкие отличия но направления мысли схожее.
Обрабатываю событие нажатие кнопки:
C++
Код HTML:
             System::Data::OleDb::OleDbCommand^  oleDbCommand;
             oleDbCommand->Connection=this->oleDbConnection1;
             oleDbCommand->CommandText="INSERT INTO `tbl_rabota` (`Детали`, `Кол-во_сделанного`, `Дата`, `Брак_кол-во`) VALUES ("+ this->textBox4->Text +" , "+ this->textBox1->Text +" ,"+  this->dateTimePicker1->Value.ToShortDateString() +" ,"+  this->textBox3->Text +")";
             oleDbCommand->ExecuteNonQuery();
             
 
            // this->oleDbConnection1->Open();
            // this->oleDbInsertCommand3->CommandText = "INSERT INTO `tbl_rabota` (`Детали`, `Кол-во_сделанного`, `Дата`, `Брак_кол-во`) VALUES (" + "textBox4->Text +" , "+ textBox1->Text +" ,"+  dateTimePicker1->Value.ToShortDateString +" ,"+  textBox3->Text +")";    
            // this->oleDbInsertCommand3->ExecuteNonQuery();
            // this->oleDbConnection1->Close();
Компилирую программу и при попытке добавить таки записи, возникает следующая ошибка:

Необработанное исключение типа "System.NullReferenceException" произошло в System.Data.dll

Дополнительные сведения: В экземпляре объекта не задана ссылка на объект.
Помогите добавить таки данные в бд с textbox-ов.
Добавление и удаление через DataGridView работает хорошо, только при DataAdapter1->Update(tbl_product); приходится сначала сделать шаг на предыдущую запись и тогда сохраняет.

Очень прошу помочь, недавно перешёл с консольных программ на графический интерфейс.
elaxblackfox вне форума   Ответить с цитированием
Старый 28.03.2016, 10:55   #2
koljsch
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 356
Репутация: 113
По умолчанию

Вы не инициализируете переменную oleDbCommand.
Почитайте: https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx
koljsch вне форума   Ответить с цитированием
Старый 28.03.2016, 11:32   #3
elaxblackfox
 
Регистрация: 09.06.2014
Сообщений: 9
Репутация: 10
По умолчанию

koljsch
Спасибо я использовал вариант ниже который был закомментирован.
Возник другой вопрос. textbox1 у меня связан с через bildingSource с таблицей в которую я добавляю данные с полем которое является подстановкой из другой таблицы. Т.е. в поле при добавлении открывается список деталей и пользователь выбирает из списка нужную. Мне же нужно добавлять в таблицу не текст, а id номер из связанной таблицы. Я организовал так создал ещё 1 textbox4 и связал его с id нужной таблицы. При выборке в textbox1 меняется и textbox4 на нужный id, его я и добавляю запросом в таблицу. И вот вопрос) когда я делаю textbox4 невидимым visible=false, возникает ошибка
"Необработанное исключение типа "System.FormatException" произошло в mscorlib.dll
Дополнительные сведения: Входная строка имела неверный формат."
Если делаю видимым, то всё работает хорошо. Как можно избавится от этой ошибки? Или можно иным способом получать id?
elaxblackfox вне форума   Ответить с цитированием
Старый 28.03.2016, 12:32   #4
koljsch
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 356
Репутация: 113
По умолчанию

elaxblackfox, сложно понять о чем идет речь.
Либо выкладывайте весь проект, либо отладчиком проходите и смотрите что у Вас в textbox4, когда он невидим.
koljsch вне форума   Ответить с цитированием
Старый 28.03.2016, 12:40   #5
elaxblackfox
 
Регистрация: 09.06.2014
Сообщений: 9
Репутация: 10
По умолчанию

http://my-files.ru/bp4dk9 вот ссылка на весь проект с бд и прочим. Я пока разбираюсь так что это можно сказать тест.
Если сделать textbox4 видимым то ошибки никакой нету, всё хорошо добавляется. Меня интересует как исправить эту ошибку либо иной способ добавить в связанную таблицу в поле с подстановкой
elaxblackfox вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как одним запросом добавить копию записи в таблицу? ЛюбительПИ Microsoft Office Access 5 28.10.2015 11:28
Как редактировать данные в таблице созданной запросом? majjestik C++ Builder 0 05.06.2013 21:55
Как исключить данные запросом? Вадичок Microsoft Office Access 9 16.09.2012 08:49
Выбрать данные из 2 таблиц одним запросом Linel SQL, базы данных 4 16.02.2011 16:29
Добавить строку в longtext одним Update запросом Alar SQL, базы данных 1 02.02.2011 19:11




09:28.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


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

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru