ممنون از راهنمایتون.فقط اگه درست متوجه شده باشم ID جدول که فرمودین باید به صورت خودکار پر بشه که در اون صورت میتوان مقدار اون رو همزمان با عمل درج بیرون کشید
برای بدست آوردن ID درج شده در جدول اول از فانکشن SCOPE_IDENTITY در کد sql استفاده کنید و سپس این مقدار رو در جدول دوم به عنوان کلیدخارجی درج کنید
ولی من وقتی میخوام مشخصات یک کتاب رو اضافه کنم توسط یه فرم اطلاعات کتاب رو در جدول کتاب و اطلاعات ناشر رو در جدول ناشر و کد ناشر همزمان توسط خود مدیر در هر دو جدول باید درج شود به صورت دستی.
تعریف کد های زیر در کلاس Access برای دسترسی کل پروژه
public DataAccess()
{
scon = new SqlConnection();
scom = new SqlCommand();
sda = new SqlDataAdapter();
scom.Connection = scon;//ارتباط با پایگاه داده از طریق خصوصیت connection برای انجام انواع عملیات
sda.SelectCommand = scom;//از خصوصیت select commend مربوط به dataadaptor برای انجام عملیات select استفاده می شود.
}
public void connect()//متدی برای اتصال به پایگاه داده
{
scon.ConnectionString = "Server=(local);database=library;Integrated Security=true;";//استفاده از رشته connection string در کلاس sqlconnection;
scon.Open();//متد openرای باز کردن ارتباط با پایگاه
}
public void insert1(string Sql1,string Sql2)
{
scom.Connection = scon;
/*if (scon.State != ConnectionState.Open)
{
scon.Open();
}*/
scom.Transaction = scon.BeginTransaction();
try
{
scom.CommandText = Sql1;
scom.CommandText = Sql2;
scom.ExecuteNonQuery();
scom.Transaction.Commit();
}
/* catch (Exception exception)
{
scom.Transaction.Rollback();
// messagebox .Show(exception.Message);
}*/
finally
{
if (scon != null) scon.Dispose();
if (scom != null) scom.Dispose();
}
}
}
و نوشتن دستورات sql برای درج در کلاس book بر اساس transaction
public void Add()
{
string Sql1 = "insert into book(bid,gid,pid,bname,bauthor,byear,btransf,bsbn, bcount,btranslattofarsi);";
Sql1 += "values({0},{1},{2},'{3}','{4}',{5},'{6}','{7}',{8 },{9})" + "declare @pid as int=(select SCOPE_IDENTITY());";
string Sql2="insert into publish1(pid,pname) values(@pid,'{1}')";
Sql1 = string.Format(Sql1, this.BookId, this.GroupId, this.PublishId,
this.Bname, this.Bauthor, this.Byear, this.Translator,
this.Bsbn, this.Count, Convert.ToInt32(this.Transfarsi));
Sql2 = string.Format(Sql1,this.PublishId,this.pname);
da.connect();
da.insert1(Sql1,Sql2);
da.disconnect();
فرم دریافت اطلاعات
2.jpg
با کمک کد شما کد transaction خودم رو اینجوری نوشتم ولی با خطای زیر مواجه میشم.
1.jpg