PDA

View Full Version : خطا در ایجاد جدول در sql 2000 با اسکریپت نویسی درسی شارپ



mohammady2
چهارشنبه 16 مرداد 1387, 22:05 عصر
در این دستور
constraint
چی کارست که این قدر مزاحم کار من میشه
من میخوام با این اسکریپت در پایگا داده sql 2000 جدول ایجاد کنم به تعداد مختلف
ولی این عبارت اجازه نمیده که مثلا دو تا جدول با دو نام مختلف مشابه داشته باشم
error ==> فقط بار اول درست جواب میده
there is already an object named tbl_part2 in the database .could not creat constraint see previuse error



public partial class Form1 : Form
{
SqlCommand cmd;
SqlConnection con;
public Form1()
{

InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// SqlConnection con = new SqlConnection("integrated security=SSPI;persist security info=True");
string st = "CREATE TABLE test.dbo." + textBox1.Text.Trim() +
" (mehe INTEGER CONSTRAINT PKeyMyId2 PRIMARY KEY, " +
" myName CHAR(50), myAddress CHAR(255), myBalance FLOAT)";
SqlConnection con = new SqlConnection("server=localhost;user id=sa;pwd=");
con.Open();
// string st = "CREATE TABLE" + textBox1.Text;

SqlCommand cmd = new SqlCommand(st, con);
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message.ToString());
}

con.Close();



}

mohammady2
پنج شنبه 17 مرداد 1387, 00:38 صبح
قضیه این constraint چیه؟

Alen
پنج شنبه 17 مرداد 1387, 08:39 صبح
دوست عزيز دليل بروز چنين خطايي اينه كه شما مي خواهيد دو ايندكس با نام يكسان در يك پايگاه داده ايجاد نماييد(PKeyMyId2) اگه نام ايندكس ها رو به عنوان مثال مطابق نام جدولها انتخاب نماييد مشكل حل ميشه.

mohammady2
پنج شنبه 17 مرداد 1387, 13:54 عصر
من همین قسمت pkeymyid2 رو با یک عبارت جدا کردم طوری که بر حسب متغیر ورودی (سال مورد نظر ) نام ایندکس جدول هم تغییر کنه اما باز هم همون خطا رو میده.حتی جالب بود اولین جدولی رو که ایجاد کرده بود رو پاک کردم و دوباره امتحان کردم (با سالی متفاوت ) اما باز هم همن خطا


myId INTEGER CONSTRAINT " + st_year + " PRIMARY KEY, "

حتما دلیل خاصی داره .

Alen
شنبه 19 مرداد 1387, 12:51 عصر
من وقتي اون كد اوليه كه گذاشته بودي رو امتحان كردم همون خطا رو داد ولي وقتي اينطوري اصلاحش كردم



string st = "CREATE TABLE test.dbo." + textBox1.Text.Trim() +
" (mehe INTEGER CONSTRAINT PKey" + textBox1.Text.Trim() + " PRIMARY KEY, " +
" myName CHAR(50), myAddress CHAR(255), myBalance FLOAT)";



همه چي درست شد دقت كن شايد يازم نام ايندكس هات يكسان ميشه