1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Retrieving New Identity Column Values doc

3 278 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Retrieving New Identity Column Values
Trường học Standard University
Chuyên ngành Computer Science
Thể loại Bài báo
Năm xuất bản 2023
Thành phố Hanoi
Định dạng
Số trang 3
Dung lượng 16,32 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Retrieving New Identity Column Values The ProductID column of the Products table is an identity column.. In this section, you'll see how to insert a new row into to Products table and re

Trang 1

Retrieving New Identity Column Values

The ProductID column of the Products table is an identity column In this section, you'll see how to insert a new row into to Products table and retrieve the new value generated

by the database for the ProductID identity column

Note You'll find a complete program named UsingIdentityColumn.cs in the ch11

directory that illustrates the use of the methods shown in this section This program listing is omitted from this book for brevity

In the examples, assume you have a DataTable named productsDataTable that is

populated with the rows retrieved by the following SELECT statement:

SELECT

ProductID, ProductName, UnitPrice

FROM Products

ORDER BY ProductID

The following example sets the PrimaryKey property of productsDataTable:

productsDataTable.PrimaryKey =

new DataColumn[]

{

productsDataTable.Columns["ProductID"]

};

The next example sets the AllowDBNull, AutoIncrement, AutoIncrementSeed,

AutoIncrementStep, ReadOnly, and Unique properties for the ProductID DataColumn of productsDataTable:

DataColumn productIDDataColumn =

productsDataTable.Columns["ProductID"];

productIDDataColumn.AllowDBNull = false;

productIDDataColumn.AutoIncrement = true;

productIDDataColumn.AutoIncrementSeed = -1;

productIDDataColumn.AutoIncrementStep = -1;

productIDDataColumn.ReadOnly = true;

productIDDataColumn.Unique = true;

Because of these settings, when you add a new DataRow to productsDataTable the ProductID DataColumn of your new DataRow will initially have the value -1

Trang 2

As in the earlier section, "Modifying Rows in a DataTable," you need to set your

DataAdapter object's InsertCommand, UpdateCommand, and DeleteCommand properties with appropriate Command objects The CommandText property of the Command object used in the UpdateCommand property is as follows:

myUpdateCommand.CommandText =

"UPDATE Products " +

"SET " +

" ProductName = @NewProductName, " +

" UnitPrice = @NewUnitPrice " +

"WHERE ProductID = @OldProductID " +

"AND ProductName = @OldProductName " +

"AND UnitPrice = @OldUnitPrice";

The CommandText property of the Command object used in the DeleteCommand

property is as follows:

myDeleteCommand.CommandText =

"DELETE FROM Products " +

"WHERE ProductID = @OldProductID " +

"AND ProductName = @OldProductName " +

"AND UnitPrice = @OldUnitPrice";

Notice the CommandText of these two Command objects isn't substantially different from those shown in the previous section, except that it goes against the Products table rather than the Customers table

The real difference is in the CommandText of the Command object used in the

InsertCommand property, which must retrieve the ProductID value generated by the database for the new row To do this, you can use the following code that contains an INSERT statement that adds a new row, along with a SELECT statement that retrieves the ProductID value using a call to the SQL Server SCOPE_IDENTITY() function: myInsertCommand.CommandText =

"INSERT INTO Products (" +

" ProductName, UnitPrice " +

") VALUES (" +

" @MyProductName, @MyUnitPrice" +

");" +

"SELECT @MyProductID = SCOPE_IDENTITY();";

myInsertCommand.Parameters.Add(

"@MyProductName", SqlDbType.NVarChar, 40, "ProductName");

myInsertCommand.Parameters.Add(

Trang 3

"@MyUnitPrice", SqlDbType.Money, 0, "UnitPrice");

myInsertCommand.Parameters.Add("@MyProductID", SqlDbType.Int,

0, "ProductID");

myInsertCommand.Parameters["@MyProductID"].Direction =

ParameterDirection.Output;

The SCOPE_IDENTITY() function returns the last inserted identity value into any table

performed within the current database session and stored procedure, trigger, function, or

batch For example, calling SCOPE_IDENTITY() in the previous example returns the last identity value inserted into the Products table, which is the ProductID of the new row

Note For details on the SCOPE_IDENTITY() function, refer to Chapter 4, "Introduction

to Transact-SQL Programming."

When you add a new DataRow to productsDataTable, the ProductID DataColumn of your new DataRow will initially have the value -1 When you call the Update() method of your SqlDataAdapter to push the new row to the database, the following steps occur:

1 Your new DataRow is pushed to the database using the INSERT statement set in myInsertCommand, with the ProductID column of the Products table being set to a new identity value generated by the database

2 The ProductID identity value is retrieved by the SELECT statement set in

myInsertCommand

3 The ProductID DataColumn in your DataRow is set to the retrieved identity value

Feel free to examine, compile, and run the UsingIdentityColumn.cs program located in the ch11 directory This program performs the following high-level actions:

1 Retrieves rows from the Products table into a DataTable named

productsDataTable

2 Adds a DataRow to productsDataTable

3 Modifies the new DataRow

4 Deletes the new DataRow

When you run this program you'll notice the change in the ProductID DataColumn value for a newly added DataRow from -1 to an actual value retrieved from the database

Ngày đăng: 21/01/2014, 07:20

w