PDA

View Full Version : ايجاد يك فيلد با مقدار یکتا



sqlcommandbuilder
جمعه 06 دی 1387, 23:10 عصر
فرض كنيد مي خواهيم ستوني ايجاد كنيم كه داده‌هاي unique « بدون تكرار» را در آن ذخيره نمائيم براي اين كار از كلاس زير استفاده مي‌كنيم :
System.data.uniqueconstraint
در مثال زير ابتدا يك datatable ايجاد نموده و داخل آن دو ستون ايجاد مي‌كنيم كه يكي از آنها را unique قرار داده و سپس داده‌ها را داخل آن وارد مي‌نمائيم.

کد:
using System;
using System.Data;

namespace CreateUniqueConstraint
{
class Program
{
static void Main(string[] args)
{
// Create a table
DataTable dt = new DataTable("Table-1");
// Add two columns
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Field1", typeof(string)).MaxLength = 50;
// Create a unique constraint on Field1
UniqueConstraint uc1 =
new UniqueConstraint("UniqueConstraint", dt.Columns["Field1"]);
// Add the constraint to the table
dt.Constraints.Add(uc1);
// Output the properties of the table constraint added
OutputConstraintProperties(dt);

// Verify the unique constraint by adding rows
try
{
AddRow(dt, 1, "Value 1");
AddRow(dt, 2, "Value 2");
AddRow(dt, 3, "Value 2");
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
}

Console.WriteLine("\nPress any key to continue.");
Console.ReadKey();
}

private static void OutputConstraintProperties(DataTable dt)
{
Console.WriteLine("DataTable {0} =< Constraint properties: ",
dt.TableName);
Console.WriteLine("\tName = ", dt.Constraints[0].ConstraintName);
Console.WriteLine("\tIsPrimaryKey = {0}",
((UniqueConstraint)dt.Constraints[0]).IsPrimaryKey);
Console.WriteLine("\tColumns: ");
foreach (DataColumn col in
((UniqueConstraint)dt.Constraints[0]).Columns)
{
Console.WriteLine("\t\t{0}", col.ColumnName);
}
}

private static void AddRow(DataTable dt, int id, string field1)
{
Console.WriteLine("\nAdding row: {0}, {1}", id, field1);
dt.Rows.Add(new object[] { id, field1 });
Console.WriteLine("Row added.");
}
}
}


http://i43.tinypic.com/v45hfa.jpg



توضيح : همانطوريكه در مثال نشان داده شده است در آن ستون یا فيلد : "field1" بعنوان ستون يكتا در نظر گرفته شده است، همانطوريكه مشاهده مي‌كنيد پس از اينكه دو مقدار تكراري value2 و value2 وارد اين ستون مي شود خطايي رخ داده و از ادامه كار جلوگيري بعمل مي آيد.
سازنده uniqueconstraint به شيوه مختلف ساخته و مقداردهي "overload" مي‌گردد:

کد:
UniqueConstraint(DataColumn[] cols)
UniqueConstraint(DataColumn col, bool isPrimaryKey)
UniqueConstraint(DataColumn[] cols, bool isPrimaryKey)
UniqueConstraint(string name, DataColumn col)
UniqueConstraint(string name, DataColumn[] cols)
UniqueConstraint(string name, DataColumn col, bool isPrimaryKey)
UniqueConstraint(string name, DataColumn[] cols, bool isPrimaryKey)
UniqueConstraint(string name, string[] columnNames, bool isPrimaryKey)



كه در آن datacolumn همانطوريكه از آن پيداست، ستوني مي باشد كه مي‌ خواهيم خاصيت يكتایی داشته باشد.
Isprimary key : اگر اين خاصيت را برابر با true مقدار دهي كنيم آنگاه datacolumn مورد نظر ما بعنوان كليد اصلي (primary key) در جدول مورد نظر قرار خواهد گرفت.
Name : يك نام از نوع string كه خودمان به ستون يا datacolumn مورد نظرمان نسبت مي‌دهيم .
همانطوريكه مشاهده مي شود مي توانيم نام ستون ها را نيز بعنوان آرايه به سازنده ارسال نمائيم.