PDA

View Full Version : سوال: در مورد نحوه ثبت اطلاعات در دیتابیس



saman95
چهارشنبه 14 مهر 1389, 15:25 عصر
با عرض سلام خدمت دوستان
راستش تا فردا باید پروژه ام رو تحویل بدم و دو تا مشکل اساسی دارم
مشکل اول :
برای ثبت اطلاعات در دیتابیس از روش کد نویسی استفاده میکنم


cm = new OleDbCommand("INSERT INTO gheibat VALUES (@redif,@kod,@name,@tarikh)", cn);

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


cm.Parameters.AddWithValue("@redif","");
cm.Parameters.AddWithValue("@kod", txtcod.Text);
cm.Parameters.AddWithValue("@name", txtname.Text);
cm.Parameters.AddWithValue("@tarikh", txtgheibat.Text);

مشکل اینجاست که یکی از فیلدهای دیتابیسم از نوع atuo number است و نمی دونم چطوری باید توی کدهام تعریفش کنم .

2. مشکل دوم هم اینه که می خوام توی هر تکس باکسم اون چیزی رو که می خوام کاربر بتونه وارد کنه
مثلا توی تکس باکس مربوط به کد کاربر نتونه کاراکتر حروف وارد کنه

M.YasPro
چهارشنبه 14 مهر 1389, 15:35 عصر
در مورد سوال اول :


insert into table (name,family) values('ali','alavi'(

توجه کنید که جدول بالا شامل یه فیلد به نام id هم هست که autonumber هست .
شما هم به اینصورت بنویس .

در مورد سوال 2 هم :
اینجا (http://barnamenevis.org/forum/showpost.php?p=490890)رو ببین .

موفق باشید .

saman95
چهارشنبه 14 مهر 1389, 15:51 عصر
در مورد سوال اول :


insert into table (name,family) values('ali','alavi'(

توجه کنید که جدول بالا شامل یه فیلد به نام id هم هست که autonumber هست .
شما هم به اینصورت بنویس .

در مورد سوال 2 هم :
اینجا (http://barnamenevis.org/forum/showpost.php?p=490890)رو ببین .

موفق باشید .
دوست عزیز برای سئوال دوم خیلی خیلی ممنون مشکل حل شد
اما سئوال اول مشکل اینجاست که که برنامه باید مشخصات رو از تکس باکس بخونه و اون فیلدی که هم بصورت outonumber هست خودش باید خود به خود بعد از ثبت هر اطلاعات وارد بشه

M.YasPro
چهارشنبه 14 مهر 1389, 16:13 عصر
من که نگفتم ali , alavi فقط ثبت بشه ، من مثال زدم .
میخواستم بگم فیلد autonumber احتیاجی به ذکر شدن توی جمله اینزرت نداره ،
حالا شما کدت رو اینجوری تغییر بده :


cm = newOleDbCommand("INSERT INTO gheibat (kod,name,tarikh) VALUES (,@kod,@name,@tarikh)", cn);

cm.Parameters.AddWithValue("@kod", txtcod.Text);
cm.Parameters.AddWithValue("@name", txtname.Text);
cm.Parameters.AddWithValue("@tarikh", txtgheibat.Text);

saman95
چهارشنبه 14 مهر 1389, 16:23 عصر
دو ست عزیز من خودم که هم همینطوری نوشتم ولی مشکل اینجاست که اگه فیلد redif رو رو که بصورت otuonumber هست رو توی برنامه ننویسم این خطا رو میده


cm.ExecuteNonQuery();

M.YasPro
چهارشنبه 14 مهر 1389, 16:30 عصر
دیتابیستون چی هست ؟

saman95
چهارشنبه 14 مهر 1389, 16:34 عصر
اکسس
تا فردا هم باید پروژه رو تحویل بدم

M.YasPro
چهارشنبه 14 مهر 1389, 16:42 عصر
من تو اکسس رو نمیدونم ولی توی sqlserver این کد جواب میده .

kamran00f
چهارشنبه 14 مهر 1389, 18:52 عصر
با عرض سلام خدمت دوستان
راستش تا فردا باید پروژه ام رو تحویل بدم و دو تا مشکل اساسی دارم
مشکل اول :
برای ثبت اطلاعات در دیتابیس از روش کد نویسی استفاده میکنم


cm = newOleDbCommand("INSERT INTO gheibat VALUES (@redif,@kod,@name,@tarikh)", cn);

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


cm.Parameters.AddWithValue("@redif","");
cm.Parameters.AddWithValue("@kod", txtcod.Text);
cm.Parameters.AddWithValue("@name", txtname.Text);
cm.Parameters.AddWithValue("@tarikh", txtgheibat.Text);

مشکل اینجاست که یکی از فیلدهای دیتابیسم از نوع atuo number است و نمی دونم چطوری باید توی کدهام تعریفش کنم .

2. مشکل دوم هم اینه که می خوام توی هر تکس باکسم اون چیزی رو که می خوام کاربر بتونه وارد کنه
مثلا توی تکس باکس مربوط به کد کاربر نتونه کاراکتر حروف وارد کنه

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

saman95
چهارشنبه 14 مهر 1389, 20:25 عصر
اینجوری مشکلم که حل نمیشه بدتر گیج هم میشم

صباح فتحی
چهارشنبه 14 مهر 1389, 20:44 عصر
سلام سامان جان من همین الان یکی درست کردم (یه جدول بافیلد id اوتونامبر ویکی name
واسه درج فقط کافیه اسم اون فیلد اوتونامبررو ننویسی
مثال

OleDbConnection c1 = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\db.accdb");
OleDbCommand cm = new OleDbCommand();
cm.Connection = c1;
c1.Open();
cm.CommandText = "insert into tb(namex) values('saman')";

cm.ExecuteNonQuery();
c1.Close();

saman95
چهارشنبه 14 مهر 1389, 21:23 عصر
باز هم نشد
آخه من از اکسس استفاده می کنم
طریقه تعریف کدها رو هم همون اول تایپک نوشتم گمون نکنم مشکلم به این راحتی حل بشه
دوست عزیز اگه ممکنه یه سری به این تایپک هم بزن اگه این سئوال رو بهم بگی این مشکلم هم حل میشه
http://www.barnamenevis.org/forum/showthread.php?p=1119596#post1119596

صباح فتحی
چهارشنبه 14 مهر 1389, 21:39 عصر
خب منم اکسس بود!
ببین عزیزم مشکل شما تویquery هست
به این مثال توجه کن:

Insert into table1 Values("@id","name")

این کویری حتماباید هم idرو واردکنی هم name
اما این کد روببی:
Insert into table1(name) Values("@name")
اینجااگه id رو وارد نکنی گیرنمیده چون auto number هست

صباح فتحی
چهارشنبه 14 مهر 1389, 21:42 عصر
باید اینطور بنویسی:

cm = newOleDbCommand("INSERT INTO gheibat(radif,kod,name,tarikh) VALUES (@redif,@kod,@name,@tarikh)", cn);
البته اگه اسم فیلدات این باشه
حالا نمیدونم کدومش autonumbrer هست
اون autonumber روی توی پرانتز gheibat ننویسی و پارامترهم بهش نفرستی