String str = String.Concat("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=", Directory.GetCurrentDirectory().ToString(), "\\PB.mdb");
OleDbConnection cn = new OleDbConnection(str);
cn.Open();
String strSelect = "SELECT * FROM Nms";
OleDbDataAdapter da = new OleDbDataAdapter(strSelect, cn);
DataSet ds = new DataSet();
da.Fill(ds, "Nms");
cn.Close();
Binding b = new Binding("Text", ds, "Nms.ID");
textBox1.DataBindings.Add(b);
Не работает связь Binding с БД
Код:
PB.mdb - база данных. В ней есть таблица Nms, с полем ID. Хочу программно(не используя визуальные средства VS) связать тестовое поле со значением ID в БД.
Следующие куски кода, по идее связывающие элементы управления с БДвзяты из MSDN, но при выполнении программы не работают
Код:
Binding b = new Binding("Text", ds, "Nms.ID");
textBox1.DataBindings.Add(b);
textBox1.DataBindings.Add(b);
Код:
textBox1.DataBindings.Add("Text", ds, "Nms.ID");
Вываливается ошибка:
Код:
System.ArgumentException: Два связывания в коллекции привязываются к одному свойству.
Имя параметра: binding
в System.Windows.Forms.ControlBindingsCollection.CheckDuplicates(Binding binding)
в System.Windows.Forms.Binding.CheckBinding()
в System.Windows.Forms.Binding.SetBindableComponent(IBindableComponent value)
в System.Windows.Forms.ControlBindingsCollection.AddCore(Binding dataBinding)
в System.Windows.Forms.ControlBindingsCollection.Add(String propertyName, Object dataSource, String dataMember, Boolean formattingEnabled, DataSourceUpdateMode updateMode, Object nullValue, String formatString, IFormatProvider formatInfo)
в System.Windows.Forms.ControlBindingsCollection.Add(String propertyName, Object dataSource, String dataMember)
в PupilBase.Form1.TableFill() в D:\Visual studio projects\Igor\PupilBase\PupilBase\PupilBase\Form1.cs:строка 60
Имя параметра: binding
в System.Windows.Forms.ControlBindingsCollection.CheckDuplicates(Binding binding)
в System.Windows.Forms.Binding.CheckBinding()
в System.Windows.Forms.Binding.SetBindableComponent(IBindableComponent value)
в System.Windows.Forms.ControlBindingsCollection.AddCore(Binding dataBinding)
в System.Windows.Forms.ControlBindingsCollection.Add(String propertyName, Object dataSource, String dataMember, Boolean formattingEnabled, DataSourceUpdateMode updateMode, Object nullValue, String formatString, IFormatProvider formatInfo)
в System.Windows.Forms.ControlBindingsCollection.Add(String propertyName, Object dataSource, String dataMember)
в PupilBase.Form1.TableFill() в D:\Visual studio projects\Igor\PupilBase\PupilBase\PupilBase\Form1.cs:строка 60
где строка 60, собственно и есть связывание:
Код:
textBox1.DataBindings.Add("Text", ds, "Nms.ID");
Проблемы начинаются, когда существует соединение с текстовым полем(которое отображает ID), и осуществляется какая-то выборка из базы(к примеру по конкретному значению в другом поле).
textBox1.DataBindings.Clear();
textBox1.DataBindings.Add("Text", ds, "Nms.ID");