我想通过将userid作为参数从存储过程(如下所示)返回多个值。我试图通过使用带数据集的函数(如下所示)接收多个值,但失败了,我得到了这样的错误列表:
错误2参数' 2':无法转换为' System.Data.SqlClient.SqlConnection'到'字符串'
错误5最佳重载方法匹配' System.Data.SqlClient.SqlDataAdapter.SqlDataAdapter(string,System.Data.SqlClient.SqlConnection)'有一些无效的论点
错误6参数1:无法转换为' System.Data.SqlClient.SqlCommand'到'字符串'
感谢任何回复。百万谢谢。
SQL:
ALTER PROCEDURE abc.testing
@userid int
AS
SELECT * FROM ss2_table
WHERE userid=@userid
C#:
public DataSet get_testing(int userid)
{
DataSet ds_testing_total = null;
using (SqlConnection connection = new SqlConnection(@"Userid=abc;Password=abc;Server=admin;Database=ss2"))
{
try
{
SqlCommand cmdselect1 = new SqlCommand();
cmdselect1.CommandType = CommandType.StoredProcedure;
cmdselect1.CommandText = "abc.testing";
cmdselect1.Parameters.Add("@userid", SqlDbType.Int, 4).Value = userid;
cmdselect1.Connection = connection;
connection.Open();
SqlDataAdapter dap1 = new SqlDataAdapter(cmdselect1, connection);
ds_testing_total = new DataSet();
dap1.Fill(ds_testing_total, "ss2_table");
return ds_testing_total;
}
catch (Exception ex)
{
Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
Console.WriteLine(" Message: {0}", ex.Message);
}
}
}
答案 0 :(得分:0)
应该是:
SqlDataAdapter dap1 = new SqlDataAdapter(cmdselect1.CommandText, connection);
-OR -
SqlDataAdapter dap1 = new SqlDataAdapter(cmdselect1);
不会强>
SqlDataAdapter dap1 = new SqlDataAdapter(cmdselect1, connection);
此外,您可以使用connection.CreateCommand()而不是新的SqlCommand()并设置连接来创建新的SqlCommand。
SqlCommand cmdselect1 = connection.CreateCommand();
答案 1 :(得分:0)
我似乎无法找到SqlDataAdapter
的构造函数的重载,其中SqlCommand
和为SqlConnection
。这可能解释了为什么它被红线化了。
SqlCommand
包含对SqlConnection
的引用,因此您应该能够:
SqlDataAdapter dap1 = new SqlDataAdapter(cmdselect1);