try
{
conn.Open();
SqlCommand comm = conn.CreateCommand();
SqlTransaction transaction = conn.BeginTransaction();
comm.Transaction = transaction; comm.CommandText = "INSERT INTO Dept (DeptName, UpID, StopID) VALUES ('" + deptinfo.DeptName + "', " + deptinfo.UpID + ", " + deptinfo.StopID + ")";
comm.ExecuteNonQuery(); comm.CommandText = "SELECT @@IDENTITY From Dept";
int newDeptID = (int)comm.ExecuteScalar(); transaction.Commit();
conn.Close(); deptinfo.DeptID = newDeptID;
return deptinfo;
}
catch (Exception ex)
{
throw ex;
}
{
conn.Open();
SqlCommand comm = conn.CreateCommand();
SqlTransaction transaction = conn.BeginTransaction();
comm.Transaction = transaction; comm.CommandText = "INSERT INTO Dept (DeptName, UpID, StopID) VALUES ('" + deptinfo.DeptName + "', " + deptinfo.UpID + ", " + deptinfo.StopID + ")";
comm.ExecuteNonQuery(); comm.CommandText = "SELECT @@IDENTITY From Dept";
int newDeptID = (int)comm.ExecuteScalar(); transaction.Commit();
conn.Close(); deptinfo.DeptID = newDeptID;
return deptinfo;
}
catch (Exception ex)
{
throw ex;
}
解决方案 »
- 会用AjaxPro的朋友帮忙解答一下
- 请问.net有窗体集成的功能吗? 多谢!
- 为控件添加事件-webBrowser添加DoubleClick事件
- 怎么编译“default.aspx.cs”文件
- 关于程序执行与session问题,请各位指教(在线等)
- ds.ReadXmlSchema("xxx.xsd")之后执行ds.GetXmlSchema(),为什么前后两个xsd结构发生改变
- bmp图像翻转问题
- 怎样动态获取DATAGRID控件中的数据?
- 上海!培训c#
- MSMQ & AD----不同电脑消息传输一定要AD支持吗?
- c#调用存储过程 有datetime类型参数,如果想传入null型
- 一个文本框的值随着另外一个文本框的改变而改变
comm.CommandText = "INSERT INTO Dept (DeptName, UpID, StopID) VALUES ('" + deptinfo.DeptName + "', " + deptinfo.UpID + ", " + deptinfo.StopID + "); "
+ " SELECT @@IDENTITY From Dept";
int newDeptID = (int)comm.ExecuteScalar();即把两句合为一句进行执行。
comm.ExecuteNonQuery();
int newDeptID = (int)comm.ExecuteScalar();由于需要两次连接数据库,并提交sql语句执行,所以你不可能得到你想要的@@identity的,因为两次执行动作不在一个线程里面。
就好比你在查询分析器里,打开两个窗口,依次分别执行的结果一样。如果你需要获得@@identity,你可以用存储过程执行插入操作,并用output参数将@@identity返回来。
使用存储过程来做.------------------------------------
--用途:增加一条记录
--项目名称:
--说明:
--时间:2006-9-20 11:07:15
------------------------------------
CREATE PROCEDURE MC_CallCardMain_ADD
@CallMainID int output,
@CallCardName nvarchar(32)
AS
INSERT INTO 表名 ([CallCardName)
VALUES(@CallCardName)
set @CallMainID= @@identity
GO
comm.ExecuteNonQuery();
如:
comm1.CommandText = "INSERT INTO Dept (DeptName, UpID, StopID) VALUES ('" + deptinfo.DeptName + "', " + deptinfo.UpID + ", " + deptinfo.StopID + ")";comm2.CommandText = "SELECT @@IDENTITY From Dept";
SqlParameter[] parameters = {
new SqlParameter("@CallMainID", SqlDbType.Int,4),
new SqlParameter("@CallCardName", SqlDbType.NVarChar),
};
parameters[0].Direction = ParameterDirection.Output;
parameters[1].Value = "名字";
comm.CommandText = "MC_CallCardMain_ADD";
comm.Parameters.AddRange(parameters ); BaseData.ExecuteNonQuery("MC_CallCardMain_ADD", parameters);
parameters[0].Value即你要的结果
SELECT @@IDENTITY,不知道有没有影响