PDA

View Full Version : سوال: به دست آوردن فیلد id در جدول قبل از ثبت رکورد به وسیله سی شارپ



mbasirati
دوشنبه 10 شهریور 1393, 18:36 عصر
سلام
من یه دیتابیس با سه جدول دارم.
news
category
news-category
که فک میکنم کاملا واضحن که برای چه کاری هستن.
من وقتی میخوام یه خبر رو ثبت کنم همون لحظه هم میخوام دسته بندی اون خبر رو توی جدول news-category ثبت کنم و نیاز به id اون خبر دارم.
مسئله اینه که تا وقتی من خبر رو ثبت نکنم نمیتونم id اون رو به دست بیارم و به نظرم هم این روش درست نیس که من اول خبر رو ثبت کنم و بعد سلکت بزنم به دیتابیس و آی دی آخرین خبر ثبت شده رو به دست بیارم. چون ممکنه چند نفر همزمان در حال ثبت خبر باشن.
از یه دوست phpکار پرسیدم گفت توی php یه تابعی هست که میشه id خبری که داری ثبت میکنی به دست بیاری. حالا من توی asp.net چطوری میتونم این کارو بکنم؟

barzin144
دوشنبه 10 شهریور 1393, 18:57 عصر
بستگی به روش شما برای insert داره من که از ado.net 2 استفاده میکنم یعنی detaset و dataTableAdapter میشه وقتی insert میکنی id رکورد insert شده رو گرفت.
ولی با sql هم میشه این کار رو کرد در آخر دستور insert مقدار SCOPE_IDENTITY() را برگردونید که id رکورد ثبت شده است.

mbasirati
دوشنبه 10 شهریور 1393, 19:10 عصر
میشه از روش اول یه مثال بزنی؟

barzin144
دوشنبه 10 شهریور 1393, 19:25 عصر
به پروژه ات یه dataset اضافه میکنی
در پنجره server explorer ارتباط به sql رو درست کن که خودش توی webconfig هم قرار میده sql connection را
بعد dataset رو باز کن و از پنجرهserver explorer جدول موردنظرت رو بکش بنداز تو dataset
حالا میتونی برای اون جدول کوئری بنویسی
حالا میتونی تو کدت اینجوری insert کنی


DataSet.
newsDataTable onewsDataTable=new dataset.
newsDataTable();
DataSetTableAdapters.NewsTableAdapters oNewsTableAdapters= new DataSetTableAdapters.NewsTableAdapters();

DataSet.NewsRow oNewsRow =

onewsDataTable.NewNewsRow ();

oNewsRow.Title= txtTitle.Text;
oNewsRow.Body= txtBody.Text;


onewsDataTable.AddUsersRow(NewNewsRow );
oNewsTableAdapters.Update(
onewsDataTable);


int LastRecordNewsID= NewNewsRow.NewsId;







توصیه میکنم درباره ado.net 2 تحقیق کنید بیشتر سوال پرسیدن یادگرفتن رو سختتر میکنه
حتما آموزشش رو پیدا میکنید این روش قدیمی هستش و حتما آموزش فارسی هم پیدا میکنی
روش های جدید ado.net 5 یا linq to EntityFrameWork code first هست هر جور راحتی اگه میخوای یادبگیری جدیدترین رو یاد بگیری بهتره

barzin144
دوشنبه 10 شهریور 1393, 19:32 عصر
به پروژه ات یه dataset اضافه میکنیدر پنجره server explorer ارتباط به sql رو درست کن که خودش توی webconfig هم قرار میده sql connection رابعد dataset رو باز کن و از پنجرهserver explorer جدول موردنظرت رو بکش بنداز تو datasetحالا میتونی برای اون جدول کوئری بنویسیحالا میتونی تو کدت اینجوری insert کنیDataSet.newsDataTable onewsDataTable=new datasetnewsDataTable();DataSetTableAdapters.NewsTa bleAdapters oNewsTableAdapters= new DataSetTableAdapters.NewsTableAdapters();DataSet.N ewsRow oNewsRow = onewsDataTable.NewNewsRow ();oNewsRow.Title= txtTitle.Text;oNewsRow.Body= txtBody.Text;onewsDataTable.AddUsersRow(NewNewsRow );oNewsTableAdapters.Update(onewsDataTable);int LastRecordNewsID= NewNewsRow.NewsId;توصیه میکنم درباره ado.net 2 تحقیق کنید بیشتر سوال پرسیدن یادگرفتن رو سختتر میکنه حتما آموزشش رو پیدا میکنید این روش قدیمی هستش و حتما آموزش فارسی هم پیدا میکنیروش های جدید ado.net 5 یا linq to EntityFrameWork code first هست هر جور راحتی اگه میخوای یادبگیری جدیدترین رو یاد بگیری بهتره.