比如如下两表,提库单索引表为主表,提库单产品表为副表,提库单号是主键,是流水号,即是自动生成的 提库单索引表(表1) 提库单产品表(表2) 提库单号(PK) 提库时间 提库人 产品编号(PK) 产品名称 数量 提库单号(PK)说明:表1是用insert语句插入的,而表2是用dataset的update实现的
1.在插入时,必须先插入表1,才能插入表2,如何使得表2获得刚插入的表1的 提库单号?同时还要防止多人操作的情况(好像的用死锁?)
2.删除时,只需删除表1,因为关联,表2会自动删除,同时还要防止多人操作的情况(好像的用死锁?)
3.更新有如何实现呢?注:假设插入主键表没问题
附一段程序(也许想法不对):
Private Sub PutInDataBase_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PutInDataBase.Click
Dim str As String
Dim cmd As SqlCommand
Dim Con As SqlConnection
Dim count As Integer
Con = New SqlConnection("Server = localhost;uid=sa;pwd=l801231;database=XXDB") '将数据插入到InWHTableIndex
cmd = New SqlCommand("PickUpWHTableIndexInsert", Con)
cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@BillOfLadingID", SqlDbType.Char, 14)
cmd.Parameters("@BillOfLadingID").Value = Session("BillOfLadingID")
cmd.Parameters.Add("@PickDate", SqlDbType.SmallDateTime)
cmd.Parameters("@PickDate").Value = Session("PickDate")
cmd.Parameters.Add("@WHCharger", SqlDbType.Char)
cmd.Parameters("@WHCharger").Value = Session("WHCharger")
Con.Open() Try
‘插入主键表
cmd.ExecuteNonQuery()
’如何插入副键表,副键表数据在dataset中
Dim adapter As SqlDataAdapter
Dim mybuilder As SqlCommandBuilder
Dim ds As DataSet
Dim i As Integer
Dim mytable As DataTable ds = CType(Session("a"), DataSet)
mytable = ds.Tables(0)
×××××××××××
如何写?此断程序只是我的想法,也许我的想法根本不对,假设插入主键表没问题
×××××××××××
Page.RegisterStartupScript("", "<script language='javascript'>alert('已成功添加记录!');window.opener.location.href='PickUpWHTransfer.aspx';</script>") Catch exc As SqlException
' Page.RegisterStartupScript("alert", "<script language='javascript'> alert('出现错误,数据没能被成功录入!')</script>")
'End Try Con.Close() End Sub谢谢大家!!!
1.在插入时,必须先插入表1,才能插入表2,如何使得表2获得刚插入的表1的 提库单号?同时还要防止多人操作的情况(好像的用死锁?)
2.删除时,只需删除表1,因为关联,表2会自动删除,同时还要防止多人操作的情况(好像的用死锁?)
3.更新有如何实现呢?注:假设插入主键表没问题
附一段程序(也许想法不对):
Private Sub PutInDataBase_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PutInDataBase.Click
Dim str As String
Dim cmd As SqlCommand
Dim Con As SqlConnection
Dim count As Integer
Con = New SqlConnection("Server = localhost;uid=sa;pwd=l801231;database=XXDB") '将数据插入到InWHTableIndex
cmd = New SqlCommand("PickUpWHTableIndexInsert", Con)
cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add("@BillOfLadingID", SqlDbType.Char, 14)
cmd.Parameters("@BillOfLadingID").Value = Session("BillOfLadingID")
cmd.Parameters.Add("@PickDate", SqlDbType.SmallDateTime)
cmd.Parameters("@PickDate").Value = Session("PickDate")
cmd.Parameters.Add("@WHCharger", SqlDbType.Char)
cmd.Parameters("@WHCharger").Value = Session("WHCharger")
Con.Open() Try
‘插入主键表
cmd.ExecuteNonQuery()
’如何插入副键表,副键表数据在dataset中
Dim adapter As SqlDataAdapter
Dim mybuilder As SqlCommandBuilder
Dim ds As DataSet
Dim i As Integer
Dim mytable As DataTable ds = CType(Session("a"), DataSet)
mytable = ds.Tables(0)
×××××××××××
如何写?此断程序只是我的想法,也许我的想法根本不对,假设插入主键表没问题
×××××××××××
Page.RegisterStartupScript("", "<script language='javascript'>alert('已成功添加记录!');window.opener.location.href='PickUpWHTransfer.aspx';</script>") Catch exc As SqlException
' Page.RegisterStartupScript("alert", "<script language='javascript'> alert('出现错误,数据没能被成功录入!')</script>")
'End Try Con.Close() End Sub谢谢大家!!!
解决方案 »
- 求教了,一个小问题。
- ????????????????大家帮我看看那里错了,我想在 div中导入百度,可是运行后也没有报错,可百度并没有倒入到div中,这是为什么阿?
- Table控件如何用交替颜色显示行
- 问一个菜鸟问题:如何重定向到上一个页面
- 家帮忙,一个JS的简单问题:)解决马上揭贴
- 一个页面到另一个页面传值问题????
- 安装Duwamish7时遇到的问题
- asp.net图片分页显示问题
- 谁为我写一个比较好理解的数据库连接,包括读删改增的代码(vb.net)
- 下载文件时弹出的对话诓中不出现打开按钮
- ASP.NET应用程序用户登陆问题 急~~!!
- 小菜一步一步来:asp.net+flash mx2004的结合使用......
表2也改为insert语句
采用事务
取得刚新增的ID若是主从表,建议你不要这样产生ID,自己定义规则,在保存时再生成,
这样安全一些,尤其是多人操作
你要么查询数据库的相关帮助,一般都用到begin/end transaciton ,commit,rollback还有。net的事务建议查下msdn吧,不过估计等下应该有大大会贴相关的资料给你看的
这个是msdn中sqlserver数据库的事务。net实现方法,你参考下,语句格式应该差不多
{
SqlConnection myConnection = new SqlConnection(myConnString);
myConnection.Open(); SqlCommand myCommand = myConnection.CreateCommand();
SqlTransaction myTrans; // Start a local transaction
myTrans = myConnection.BeginTransaction();
// Must assign both transaction object and connection
// to Command object for a pending local transaction
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans; try
{
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
try
{
myTrans.Rollback();
}
catch (SqlException ex)
{
if (myTrans.Connection != null)
{
Console.WriteLine("An exception of type " + ex.GetType() +
" was encountered while attempting to roll back the transaction.");
}
}
Console.WriteLine("An exception of type " + e.GetType() +
" was encountered while inserting the data.");
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}
}