Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как получить новый ID добавленной записи? / 3 сообщений из 3, страница 1 из 1
09.04.2010, 12:14
    #36570326
shieldHR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить новый ID добавленной записи?
Как получить новый ID добавленной записи?
первичный ключ не автоинкрементный...
если я вычислю как максимальный ID из таблицы +1, то при обдейте датасета, не произойдет ли ошибка из за того. что уже кто то сделал добавление в это поле?
и собственно вопрос... как вообще решаются такого типа проблемы?
ногами не пинать... адо нет только изучаю...
Спасибо за помощь!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
                    //Вставка новой строки
                    object[] newRow = new object[5];
                    //newRow[0] = Guid.NewGuid(); //вот тут как мне получить новый ID?
                    newRow[1] = "99ksdjf";
                    newRow[2] = "99ksdjf";
                    newRow[3] = "99ksdjf";
                    newRow[4] = 99;
полный текст
Код: plaintext
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.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;

namespace ado
{
    class Program
    {
        static void Main(string[] args)
        {
            //Получаем доступ к БД
            String strConn = "Provider=SQLOLEDB;Server=NNITANALYS02;Database=TEST;UID=sa;Password=123456";
            OleDbConnection dbconn = new OleDbConnection(strConn);
            dbconn.Open();
            DataSet ds = new DataSet();
            OleDbDataAdapter daAdapter = new OleDbDataAdapter("select * from Table_test", dbconn);
            OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(daAdapter);
            daAdapter.Fill(ds);
            dbconn.Close();

            String input;
            do
            {
                //Вводим консольную команду 
                input = Console.ReadLine().ToString();
                // Если команда s, то выводим на экран таблицу
                if (input == "s")
                {
                    // Выводим данные на экран
                    DataTable dt = ds.Tables[0];
                    foreach (DataRow row in dt.Rows)
                    {
                        foreach (Object val in row.ItemArray)
                        {

                            Console.Write(val.ToString() + "; ");
                        }
                        Console.WriteLine();
                    }
                }

                // Если команда i, то делаем вставку данных в таблицу
                if (input == "i")
                {
                    DataTable dt = ds.Tables[0];
                    DataColumn[] colArr = new DataColumn[1];

                    colArr[0] = dt.Columns[0];
                    dt.PrimaryKey = colArr;

                    //Вставка новой строки
                    object[] newRow = new object[5];
                    //newRow[0] = Guid.NewGuid(); //вот тут как мне получить новый ID?
                    newRow[1] = "99ksdjf";
                    newRow[2] = "99ksdjf";
                    newRow[3] = "99ksdjf";
                    newRow[4] = 99;

                    DataRow insert = dt.Rows.Add(newRow);
                }/**/

                //Обновляем DataSet
                dbconn.Open();
                daAdapter.Update(ds);
                dbconn.Close();
            }
            while (input != "q");
            
            dbconn.Close();

        }
    }
}
...
Рейтинг: 0 / 0
12.04.2010, 12:55
    #36573875
stimpi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить новый ID добавленной записи?
если тип айдихи GUID, то его смело на клиенте можно создавать, если тип int, то
Код: plaintext
event OleDbDataAdapter.RowUpdating

http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdataadapter.rowupdated.aspx
...
Рейтинг: 0 / 0
16.04.2010, 11:54
    #36582086
jsmirnoww
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить новый ID добавленной записи?
1. в клиенте временно пишешь в id отрицательные значения (можно задать в свойствах поля, чтоб автоматом нумеровалось)
2. из хранимой процедуры, которая делает добавление записи в таблицу , возвращаешь вычисленный в ней новый ID
4. выходной параметр таблицы связываешь с полем datatable
3. после передачи изменений на сервере твой отрицательный ID автоматически обновится на тот, что вернула хранимая процедура
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как получить новый ID добавленной записи? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]