PDA

View Full Version : ایجاد ستون ID در دیتابیس.



mjzsoft25
شنبه 21 مرداد 1391, 14:46 عصر
سلام
میخواستم بدونم که چه جوری میشه ستون ID رو جوری درست کرد که از 1 شروع بشه وبا اضافه کردن هر رکورد به صورت خودکار یکی به او اضافه بشه.
مثلا:
1
2
3
4
و اگر رکوردی از بالا پاک شد از شماره ها کم نشه.:گریه:

asadegha
شنبه 21 مرداد 1391, 15:10 عصر
شما میتونی فیلدی که میخوای autonumber کنی، در قسمت پروپرتیها یه گزینه هست به اسم Identity Specification. یه + داره کنارش. اونو بزن. گزینه زیریش که اسمش Is Identity هست رو برابر true کنید.
کارتون راه میوفته.

دقت کنید سوالتون رو در بخش مربوطه بپرسید.

mjzsoft25
شنبه 21 مرداد 1391, 18:35 عصر
شما میتونی فیلدی که میخوای autonumber کنی، در قسمت پروپرتیها یه گزینه هست به اسم Identity Specification. یه + داره کنارش. اونو بزن. گزینه زیریش که اسمش Is Identity هست رو برابر true کنید.
کارتون راه میوفته.

دقت کنید سوالتون رو در بخش مربوطه بپرسید.

ببخشید دوست عزیز ولی من اون گزینه رو پیدا نمی کنم.

Yanehsar
شنبه 21 مرداد 1391, 19:26 عصر
سلام داخل عكس مشخصه همون گزينه كه بالايي ابي رنگ مشخص شده علامت < كنارش را بزن تا زير گزينه اش معلوم بشه و سپس برابر با Yes قرار بده

mjzsoft25
شنبه 21 مرداد 1391, 23:15 عصر
91110پیدا کردم ولی هر وقت یه رکورد جدید اضافه می کنم مقدار اون فیلد 0 میشه و اگه دو باره رکورد اضافه کنم بازم 0 میشه.

Yanehsar
شنبه 21 مرداد 1391, 23:52 عصر
اگر نوع فيلدي مثل int باشه و Identity رو برابر با Yes قرار بدي به صورت اتونامبر ميشه.

mjzsoft25
شنبه 21 مرداد 1391, 23:57 عصر
اگر نوع فيلدي مثل int باشه و Identity رو برابر با Yes قرار بدي به صورت اتونامبر ميشه.

دوست عزیز جواب نداد.
اگه میشه از اول بگید باید چیکار کنم.:خجالت:

Y_Safaiee
یک شنبه 22 مرداد 1391, 00:19 صبح
سلام دوست من

راههای مختلفی وجود داره یکی اینه که اونو اتونامبر کنی به این صورت :

الف استفاده از اتونامبر: یک فیلد از نوع int بساز و در حالی که در حال انتخابه به قسمت پروپرتیسش برو و در از زیرمجموعه قسمت Identity specifiction گزینه is Identity رو از حالت no به yes ببر حالا دو گزینه زیرش فعال و هردو پیش فرض 1 هست,increment یعنی تعداد گامش و seed یعنی از شماره چند شروع شه.

ب: استفاده از کد(همش دو خطه کدش):اینم یه سمپل کد برات که از طریق کد نویسی شماره میده :


using System.Data.SqlClient;
namespace Test
{
public partial class Form1 : Form
{
SqlConnection cnn=new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database1.mdf;Integrated Security=True;User Instance=True");
SqlDataAdapter da;
DataTable dt = new DataTable();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)

{

string sql="select max(id)+1 from list";
cnn.Open();

dt.Clear();

SqlCommand cmd = new SqlCommand(sql, cnn);
object max = cmd.ExecuteScalar();

if (max == null || max.ToString() == "") textBox1.Text = "1";
else textBox1.Text = max.ToString();

da =new SqlDataAdapter("select * from list", cnn);
da.Fill(dt);
dataGridView1.DataSource = dt;

cnn.Close();

}

private void button1_Click(object sender, EventArgs e)
{

cnn.Open();
SqlCommand cmd = new SqlCommand("insert into list (id,name) values(@id,@name)",cnn);

cmd.Parameters.Add("@id", long.Parse(textBox1.Text));
cmd.Parameters.Add("@name", textBox2.Text);
cmd.ExecuteNonQuery();

cnn.Close();

Form1_Load(sender, e);

}
}
}




موفق باشی
بایت بایت

mjzsoft25
یک شنبه 22 مرداد 1391, 00:47 صبح
91115
سلام دوست من

راههای مختلفی وجود داره یکی اینه که اونو اتونامبر کنی به این صورت :

الف استفاده از اتونامبر: یک فیلد از نوع int بساز و در حالی که در حال انتخابه به قسمت پروپرتیسش برو و در از زیرمجموعه قسمت Identity specifiction گزینه is Identity رو از حالت no به yes ببر حالا دو گزینه زیرش فعال و هردو پیش فرض 1 هست,increment یعنی تعداد گامش و seed یعنی از شماره چند شروع شه.

ب: استفاده از کد(همش دو خطه کدش):اینم یه سمپل کد برات که از طریق کد نویسی شماره میده :


using System.Data.SqlClient;
namespace Test
{
public partial class Form1 : Form
{
SqlConnection cnn=new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database1.mdf;Integrated Security=True;User Instance=True");
SqlDataAdapter da;
DataTable dt = new DataTable();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)

{

string sql="select max(id)+1 from list";
cnn.Open();

dt.Clear();

SqlCommand cmd = new SqlCommand(sql, cnn);
object max = cmd.ExecuteScalar();

if (max == null || max.ToString() == "") textBox1.Text = "1";
else textBox1.Text = max.ToString();

da =new SqlDataAdapter("select * from list", cnn);
da.Fill(dt);
dataGridView1.DataSource = dt;

cnn.Close();

}

private void button1_Click(object sender, EventArgs e)
{

cnn.Open();
SqlCommand cmd = new SqlCommand("insert into list (id,name) values(@id,@name)",cnn);

cmd.Parameters.Add("@id", long.Parse(textBox1.Text));
cmd.Parameters.Add("@name", textBox2.Text);
cmd.ExecuteNonQuery();

cnn.Close();

Form1_Load(sender, e);

}
}
}




موفق باشی
بایت بایت

دوست عزیز این کدها رو وارد کردم ولی هنگام باز کردن پروژه اررور میده.

Y_Safaiee
یک شنبه 22 مرداد 1391, 00:52 صبح
با سلام مجدد

کدهارو دقیقا همینطوری کپی نکن تو برنامت فقط قسمت کدها رو بردار و مشخصات جدول و پایگاه دادم متناسب با فیلدها و جدول ها و پایگاه داده خودت عوض کن.اگه بازم ارور داره متن ارور یا عکسش چیه؟

mjzsoft25
یک شنبه 22 مرداد 1391, 18:29 عصر
با سلام مجدد

کدهارو دقیقا همینطوری کپی نکن تو برنامت فقط قسمت کدها رو بردار و مشخصات جدول و پایگاه دادم متناسب با فیلدها و جدول ها و پایگاه داده خودت عوض کن.اگه بازم ارور داره متن ارور یا عکسش چیه؟
دوست عزیز از خط زیر موقع Debug اررور میگیره.
SqlConnection cnn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database2.mdf;Integrated Security=True;User Instance=True"

91160

Y_Safaiee
یک شنبه 22 مرداد 1391, 21:52 عصر
سلام دوست من

فاصله بین DataDirectory رو بردار , و یک نکته هست تو کد من دیتابیس باید کنار برنامه اصلی باشه,برای اینکه مسیر درست دیتابیس خودتو بدست بیاری تو server explorer دیتابیستو add کد سپس روش کلیک کن تو پروپرتیسش قسمت connection string مسیر نوشته شده.

موفق باشی
بایت بایت

mjzsoft25
دوشنبه 23 مرداد 1391, 04:56 صبح
سلام دوست من

فاصله بین DataDirectory رو بردار , و یک نکته هست تو کد من دیتابیس باید کنار برنامه اصلی باشه,برای اینکه مسیر درست دیتابیس خودتو بدست بیاری تو server explorer دیتابیستو add کد سپس روش کلیک کن تو پروپرتیسش قسمت connection string مسیر نوشته شده.

موفق باشی
بایت بایت
با سلام و عرض خسته نباشید.
اون مشکل حل شد ولی حالا وقتی می خواهد کانکشن رو باز کنه اررور میگیره.
cnn.Open();
و زیر این دو خط زیر هم یک خط سبز هست.
cmd.Parameters.Add("@id", long.Parse(textBox1.Text));
cmd.Parameters.Add("@name", textBox2.Text);
این هم هشداری که برای دو خط بالا می گیره
Warning 1 'System.Data.SqlClient.SqlParameterCollection.Add( string, object)' is obsolete: 'Add(String parameterName, Object value) has been deprecated. Use AddWithValue(String parameterName, Object value). http://go.microsoft.com/fwlink/?linkid=14202' E:\Projects\C#‎‎\My\Test\Test\Form1.cs 58 14 Test

mjzsoft25
دوشنبه 23 مرداد 1391, 11:47 صبح
دوست عزیز میشه یه نمونه از برنامه رو بنویسی و سورسش رو برای دانلود قرار بدی.
ممنون میشم اگه این کارو بکنی آخه خیلی کارم لنگه.:افسرده:

Y_Safaiee
دوشنبه 23 مرداد 1391, 13:20 عصر
سلام دوست من

برات یه سمپل کد نوشتم

موفق باشی
بایت بایت