gpt4 book ai didi

c# - SqlDataAdapter输出变量问题C#

转载 作者:太空狗 更新时间:2023-10-29 23:03:49 25 4
gpt4 key购买 nike

我不清楚如何在使用 C# 时为输出变量格式化 SqlDataAdapter

错误信息:

索引(从零开始)必须大于或等于零且小于参数列表的大小。

代码示例(存储过程工作正常):

private DataTable updateOrdEodHold(DataTable tb, out string mnpft,
out string authld, out string trd, out string hld, out string extnow)
{
// Start the connection string.
string connstr = ConfigurationManager.ConnectionStrings
["LocalSqlServer"].ConnectionString;
SqlConnection myConn = new SqlConnection(connstr);
// Declare symbol and assign for Errors Catch Exception.
string Symbol = "";
string sqlComm = "dbo.UpdateOrdEodHold";
DataTable HoldVals = new DataTable();
SqlDataAdapter dataAdp = new SqlDataAdapter(sqlComm, myConn);
dataAdp.SelectCommand.CommandType = CommandType.StoredProcedure;
string ticker = (string)Convert.ToString(tb.Rows[0]["Ticker"]);
// update Symbol for Catch ex
Symbol = ticker.ToString();
String company = (string)Convert.ToString(tb.Rows[0]["Company"]);
String avgprofit = (string)Convert.ToString(tb.Rows[0]["AvgProfit"]);
String extdte = (string)Convert.ToString(tb.Rows[0]["ExitDate"]);
dataAdp.SelectCommand.Parameters.Clear();
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@ticker",
SqlDbType.VarChar, 10));
dataAdp.SelectCommand.Parameters["@ticker"].Value =
(string)ticker.ToString();
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@company",
SqlDbType.VarChar, 25));
dataAdp.SelectCommand.Parameters["@company"].Value =
(string)company.ToString();
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@avgpft",
SqlDbType.VarChar, 10));
dataAdp.SelectCommand.Parameters["@avgpft"].Value =
(string)avgprofit.ToString();
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@mnpft",
SqlDbType.VarChar, 10));
dataAdp.SelectCommand.Parameters["@mnpft"].Direction =
ParameterDirection.Output;
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@authld",
SqlDbType.VarChar, 6));
dataAdp.SelectCommand.Parameters["@authld"].Direction =
ParameterDirection.Output;
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@hld",
SqlDbType.VarChar, 6));
dataAdp.SelectCommand.Parameters["@hld"].Direction =
ParameterDirection.Output;
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@trd",
SqlDbType.VarChar, 6));
dataAdp.SelectCommand.Parameters["@trd"].Direction =
ParameterDirection.Output;
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@extnow",
SqlDbType.VarChar, 6));
dataAdp.SelectCommand.Parameters["@extnow"].Direction =
ParameterDirection.Output;
dataAdp.SelectCommand.Parameters.Add(new SqlParameter("@extdte",
SqlDbType.VarChar, 15));
dataAdp.SelectCommand.Parameters["@extdte"].Value =
(string)extdte.ToString();
dataAdp.Fill(HoldVals);
mnpft = HoldVals.Rows[0]["MinProfit"].ToString();
authld = HoldVals.Rows[0]["AutoHold"].ToString();
trd = HoldVals.Rows[0]["Trade"].ToString();
hld = HoldVals.Rows[0]["Hold"].ToString();
extnow = HoldVals.Rows[0]["ExitNow"].ToString();
return HoldVals;
}

最佳答案

您需要保存对输出参数变量的引用,以便在适配器执行命令后您可以使用parameter.Value 访问返回给它的值。

//Create the parameter 
SqlParameter parameter = new SqlParameter("@mnpft", SqlDbType.VarChar);

//Set the parameter direction as output
parameter.Direction = ParameterDirection.Output;

sqlCommand.Parameters.Add(parameter);

SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);
sqlAdapter.Fill(dataSet);

//Fetch the output parameter after doing the Fill
string outputValue = Convert.ToString(parameter.Value);

关于c# - SqlDataAdapter输出变量问题C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3850406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com