解决方案 »
- 关于VS2010的宏
- Designer.cs不能进行重构吗?重构以后,设计界面打不开了,编译、运行都没有问题。
- 重新抛出异常和不用try有什么区别?
- 江湖救急,第二张贴,怎样设置路径,才能将生成的xml文件保存。
- C# 友好提示页面 弹出警告提示框
- 当我在的treeView1空区域乱点时,报错,未将对象引用到实列,高手知道的进.....
- 反射中如何调用静态类的方法
- 更新DataGrid时不能获得TextBox控件文本框中的值
- WPF MVVM绑定问题
- 等待!主程序的入口是main(),通过new创建了MainForm的一个实例,请问我该怎么办?(见内容)
- c#调用refprop.dll
- 【求助】string类型的赋值问题
ExecuteNonQuery——不返回值
ExecuteReader——返回一个SqlDataReader
ExecuteScalar——返回一个值
如果需要读取一系列数据就使用SqlDataReader,自己做统计,然后获得读取的数字
或者用select count(*) from where XX=XX,配合ExecuteScalar返回一个值即可。
返回的类型是 SqlDataReader是这样的 这个是我用的sqlhelp方法 直接传入存储过程的名字和参数 就可以使用存储过程了
但是现在我的数据里 我写一个 有返回值的 存储过程 我现在想用这个方法 接收 我那个返回值 不知道该如何做了
我有个类,里面定义的类型有
Class A{
string s1;
string 22;
int id;
}
id是自动增长型的。在用存储过程插入的时候,需要返回所得id号。
存储类型是这样写的
Create Procedure a_Insert
@s1 nvarchar(50),
@s2 nvarchar(50),
As
Begin
Insert Into a
([s1],[s2])
Values
(@s1,@s2) Declare @ReferenceID int
Select @ReferenceID = @@IDENTITY
Return @ReferenceID
End
GO
然后sqlhelper里面,我另外写一个Insert()函数,可以读取返回值
public static int Insert(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{ SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString))
{
PrepareInsertCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = cmd.ExecuteNonQuery();
if (val == 1)
{
val = Convert.ToInt32(cmd.Parameters[0].Value);
}
else
{
val = 0;
}
cmd.Parameters.Clear();
return val;
}
}使用很简单,就是
a.id=sqlhelper.insert(**,**,**,**)
我一次只插入一条记录,获得一个id,希望对你有帮助。
你说的一次插入很多记录,我没有用过。
既然sqlhelper你不会写,那就找其作者给你另外写一个返回 int 的方法吧。