SqlConnection thisConnection;
SqlCommandBuilder thisBuilder;
DataSet thisDataSet;
SqlDataAdapter custAdapter;
как добавить в таблицу колонку с данными?
Здраствуйте!
Столкнулся с проблемой.
Опишу всё по частям.
заданы переменные
Код:
Cоздаём в DataSet таблицу и загружаем туда данные получаем таблю с 3-мя столбцами и множеством строк
Код:
thisConnection = new SqlConnection(
@"Data Source=.\SQLEXPRESS;" +
@"AttachDbFilename='C:\SQL Server 2000 Sample Databases\NORTHWND.MDF';" +
@"Integrated Security=True;Connect Timeout=30;User Instance=true");
thisDataSet = new DataSet();
custAdapter = new SqlDataAdapter(
"SELECT CustomerID , CompanyName , Address FROM Customers", thisConnection);
thisBuilder = new SqlCommandBuilder(custAdapter);
custAdapter.FillSchema(thisDataSet, SchemaType.Source);
custAdapter.Fill(thisDataSet, "Customers");
//DataColumn[] keys = new DataColumn[1];
//keys[0] = thisDataSet.Tables["Customers"].Columns["CustomerID"];
//thisDataSet.Tables["Customers"].PrimaryKey = keys;
@"Data Source=.\SQLEXPRESS;" +
@"AttachDbFilename='C:\SQL Server 2000 Sample Databases\NORTHWND.MDF';" +
@"Integrated Security=True;Connect Timeout=30;User Instance=true");
thisDataSet = new DataSet();
custAdapter = new SqlDataAdapter(
"SELECT CustomerID , CompanyName , Address FROM Customers", thisConnection);
thisBuilder = new SqlCommandBuilder(custAdapter);
custAdapter.FillSchema(thisDataSet, SchemaType.Source);
custAdapter.Fill(thisDataSet, "Customers");
//DataColumn[] keys = new DataColumn[1];
//keys[0] = thisDataSet.Tables["Customers"].Columns["CustomerID"];
//thisDataSet.Tables["Customers"].PrimaryKey = keys;
Теперь необходимо дополнительно из тойже самой бызы данных и находящейся в неи таблице, загрузить ещё несколько имеющихся там столбцов.
Т.е. хочу загружать данные не все сразу а по мере необходимости, я пробовал разные варианты.
В частности самый простой.
Код:
custAdapter = new SqlDataAdapter("SELECT CustomerID ,ContactName , ContactTitle , City FROM Customers",thisConnection);
//custAdapter.MissingSchemaAction = MissingSchemaAction.Add;
thisBuilder = new SqlCommandBuilder(custAdapter);
custAdapter.Fill(0,thisDataSet.Tables["Customers"].Rows.Count,thisDataSet.Tables["Customers"]);
//custAdapter.MissingSchemaAction = MissingSchemaAction.Add;
thisBuilder = new SqlCommandBuilder(custAdapter);
custAdapter.Fill(0,thisDataSet.Tables["Customers"].Rows.Count,thisDataSet.Tables["Customers"]);
В итоге данные данные будут добавлены в конец табл.
Связано с тем что, как я понимаю не задан общий ключ.
Я пробовал эксперементировать с Primary Key и свойствами
custAdapter.MissingSchemaAction
custAdapter.MissingMappingAction
Но результат либо различные исключения, в основном
(Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.) и др. в зависимости от тог что я делал.
Подскажите правильный выход,что я делал не так?
Как добавить в таблицу колонку с данными?????????
Я бы предложил просто загружать в датасет все данные сразу, всё равно ведь их придётся туда загружать. А потом уже просто отображать его в DataGridView по мере необходимости.