Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
][irurg
175 / 174 / 38
Регистрация: 16.06.2010
Сообщений: 511
1

Значение ID новой записи в таблице DataSet

10.02.2012, 18:08. Просмотров 1544. Ответов 5
Метки нет (Все метки)

Есть бд1 на ms sql2008 с табличкой Authors (ID int autoincrement primary key,Name nvarchar).
Заполняю dataSet и настраиваю также поля таблицы. При добавлении новой записи в dataset["Authors"] не знаю какое число писать в ID.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2012, 18:08
Ответы с готовыми решениями:

Поиск записи в таблице DataSet
Есть таблица пожаров в БД firebird , по ней нужно создать и постоянно обновлять данные в таблице ...

Как получить значение в таблице DataSet
Заполнил таблицу в DataSet ds:daName = new OleDbDataAdapter("SELECT *FROM tblContacts", con);...

Можно ли в таблице БД задать столбец, в котором бы автоматически рассчитывалось бы значение для новой записи?
Доброго времени суток! Подскажите пожалуйста, можно ли в таблице БД задать столбец, в котором бы...

Изменение первой в таблице записи (одного кортежа) при добавление новой записи
Добрый день! При добавлении новой записи через форму ДобСтуд в таблице Студ у первой записи...

MS Sql: при добавлении новой записи, информация из первой записи в таблице исчезает
Ошибка заключается в том, что при добавлении новой записи(через программу), информация из первой...

5
pincet
1393 / 976 / 131
Регистрация: 23.07.2010
Сообщений: 5,317
10.02.2012, 18:10 2
А никакое писать не надо
1
][irurg
175 / 174 / 38
Регистрация: 16.06.2010
Сообщений: 511
10.02.2012, 18:34  [ТС] 3
pincet, Если у меня в таблице на сервере есть записи например с такими id (0,1,30,6,4,) , то при добавлении новой записи в dataSet["Authors"], в ID заносится 0 и возникает ошибка ограничения первичного ключа, так как такой ID уже есть.
0
pincet
1393 / 976 / 131
Регистрация: 23.07.2010
Сообщений: 5,317
10.02.2012, 20:50 4
Давай код клиента
0
][irurg
175 / 174 / 38
Регистрация: 16.06.2010
Сообщений: 511
10.02.2012, 22:50  [ТС] 5
pincet, вот пример
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        DataSet dataSet = new DataSet();
        SqlDataAdapter authorDataAdapter;
        SqlConnection connection;
 
        public Form1()
        {
            InitializeComponent();
            connection = new SqlConnection("Data Source=LG\\SQLEXPRESS;Initial Catalog=BD1;Integrated Security=True");
            authorDataAdapter = new SqlDataAdapter("Select * From Authors",connection);
 
            SqlCommand insertCommand = new SqlCommand();
            insertCommand.Connection = connection;
            insertCommand.CommandText = "InsertAuthor";
            insertCommand.CommandType = CommandType.StoredProcedure;
            SqlParameter parameter = new SqlParameter("@Name",SqlDbType.NVarChar,0,"Name");
            insertCommand.Parameters.Add(parameter);
            authorDataAdapter.InsertCommand = insertCommand;
 
            authorDataAdapter.Fill(dataSet, "Authors");
            bindingSource1 = new BindingSource();
            bindingSource1.DataSource = dataSet.Tables["Authors"];
            bindingNavigator1.BindingSource = bindingSource1;
            dataGridView1.DataSource = bindingSource1;
 
            dataSet.Tables["Authors"].Columns["ID"].AutoIncrement = true;
            dataSet.Tables["Authors"].PrimaryKey = new DataColumn[] { dataSet.Tables["Authors"].Columns["ID"] };
        }
 
        //Сохранить в бд
        private void button1_Click(object sender, EventArgs e)
        {
            authorDataAdapter.Update(dataSet, "Authors");
        }
 
        //Добавить автора
        private void button2_Click(object sender, EventArgs e)
        {
            Random random = new Random();
            DataRow newRow = dataSet.Tables["Authors"].NewRow();
            newRow["Name"] = "Автор "+random.Next();
            dataSet.Tables["Authors"].Rows.Add(newRow);
        }
    }
}
0
Вложения
Тип файла: zip Desktop.zip (205.1 Кб, 10 просмотров)
][irurg
175 / 174 / 38
Регистрация: 16.06.2010
Сообщений: 511
12.02.2012, 02:35  [ТС] 6
Есть кто живой? Думаю делать так:
После загрузки данных в dataSet.Tables["Authors"], определить мах("ID")+1 и записать в dataSet.Tables["Authors"].Columns["ID"].AutoIncrementSeed.
Так правильно или это решается по-другому?

Добавлено через 4 часа 8 минут
Сделал так:
C#
1
2
3
dataSet.Tables["Authors"].Columns["ID"].AutoIncrement = true;
dataSet.Tables["Authors"].Columns["ID"].AutoIncrementSeed = -1;
dataSet.Tables["Authors"].Columns["ID"].AutoIncrementStep = -1;
Теперь нет конфликтов между "ID" загружаемыми из базы и генерируемыми в dataSete.:dance3:
0
12.02.2012, 02:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 02:35

Как создать в форме новый столбец в DGV Form3, при добавлении новой записи в таблице Form1
Здравия желаю! Проблема такова: есть у меня несколько форм ( Form1 , Form2, Form3 , родительская (и...

При создании новой записи в таблице "клиенты" в одном из столбцов писать случайные цифры
Вобщем проблема такова-делаю клиент для базы mysql,в базе две таблицы-клиенты и техника. Сейчас я...

ADO: command Execute, значение счетчика после всавки новой записи
Как можно узнать значение счетчика после вставки новой записи не запрашивая БД ('SELECT FROM...')...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru