- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我不清楚如何在使用 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/
我正在编写一个程序,从 SQL 数据库中提取数据并将其输入到 Excel 中。我一切正常,只是我注意到在 Excel 中返回的行与在 SQL 中看到的不匹配。填充 DataTable 对象时,最后
我正在尝试更新 TableTwo使用 DataTable使用 TableOne 构建. 表之间的关系是一个名为 TableOneId 的外部列里面 TableTwo . 我使用以下代码示例来完成这项工
看来我的代码不完整或者我的语法有误,但我尽力想出了某种解决方案,但到目前为止没有成功......所以这就是我正在尝试做的事情:我有几个下拉框,想将每个下拉框的选定值分配给表适配器中的值。到目前为止,这
SqlDataAdapter 是否打开自己的连接? private DataTable UpdateOxa(ProductCatalogSyncData syncDataModel,
我正在尝试批量插入/更新 SqlDataAdapter。当我设置 UpdateBatchSize = 1 时,它可以工作,但将其设置为 2 会出现异常“指定的参数名称‘Id’无效。”。 using (
我有两个表,User 和 UserReputation。我想用 SqlDataAdapter 获取数据。 SqlConnection conn = new SqlConnection(
大家好,我有这个 SqlDataAdapter 可以找到最高值: DataTable dt = new DataTable(); SqlDataAdapter SDA = ne
我有一个问题。我整天都在尝试解决它,但我真的被困住了。我正在使用 VS2010 和 SQL Server 2012(相当糟糕的组合),我正在尝试执行一段相当简单的 C# 和 ASP.net 代码,如下
我想使用 SqlDataAdapter 将数据从一个数据库表插入到另一个数据库表,但在从另一个表导入行后没有效果 代码 DataTable table1 = objDataset1.Tables[0]
我想知道 SqlDataAdapter 是如何在内部工作的,尤其是当使用 UpdateCommand 来更新一个巨大的 DataTable 时(因为它通常比仅发送要快得多来自循环的 sql 语句)。
我正在尝试在构建 sqldataadapter 后运行更新语句。我的表中有一个名为 INIT_PHASE 的列,如果 INIT_PHASE 为空或没有数据,那么我想将其设置为 1。我已经尝试过,但我似
我在 MS SQL 2005 中有一个带有主键的表,它有几十万条记录。当我在 Management Studio 中查询它以获取记录时,它带来的速度非常快,但是当我使用下面的代码找到它时,它需要很多秒
假设您调用了 SQlDataAdapter 的更新方法: MyDataSet.Tables[0].DefaultView.RowStateFilter = DataViewRowSta
我知道通常推荐的从存储过程填充 DataSet 实例的方法是使用 SqlDataAdapter.Fill(DataSet)。我能找到的每个答案都说要以开箱即用的方式使用它。我会正常授予的,它很好用。
我正在使用 VS2012 和 SQL Server Express 2008。我已经归结我的连接/查询以尝试找出为什么我的 DataSet 没有被填充。连接成功完成,没有抛出异常,但是适配器没有填充D
我的问题:有没有办法像这样用一个 SqlDataAdapter 运行多个存储过程 adapter = new SqlDataAdapter("ProcforselectUserTableWhere ;
我做了以下事情: SqlConnection conn = new SqlConnection("... my connection string ..."); dataAdapter = new S
所以,我有一个必须维护的内部数据访问框架,并且我要向其中添加事务。我在放入一个包时遇到问题:Transactions、SqlDataAdapters、SqlCommandBuilders 以及主键定义
然而,我一直在尝试将 SQL 数据库加载到 C++ 中的数据表中;它似乎不想工作。不过,随着 DataReader 的工作,连接正在工作。这是我的代码 void importDatabase() {
所以我试图用来自 MSSQL 查询的数据填充 DataTable,但出于某种原因它完全拒绝工作,这让我非常恼火。 当我使用 SqlDataReader 和 Read() 遍历结果时,我得到了结果,甚至
我是一名优秀的程序员,十分优秀!