使用 ADODB.Parameters 更正 MS SQL 更新语句语法 C#?
Correct MS SQL Update statement syntax C# with ADODB.Parameters?
这是适用于 Insert 的代码 - 我只需要帮助将其转换为具有值和 where 子句语法的 Update。
ADODB.Command cmdInsert = new ADODB.Command();
cmdInsert.ActiveConnection = conn;
cmdInsert.CommandText = "INSERT INTO ExchangeTypes(MarketSelectionId) VALUES (?)";
//Update statement to be modelled:
//cmdUpdate.CommandText = "Update ExchangeTypes SET
//LayOdds = '" & layOdds & "'" & ",
//Size='" & laySize & "' WHERE
//MarketId='" & marketid & "'" and SelectionId='" & selectionid & "'"
cmdInsert.CommandType = ADODB.CommandTypeEnum.adCmdText;
// Append the parameters
ADODB.Parameter paramMS = cmdInsert.CreateParameter(
"MarketSelectionId", // Parameter name
ADODB.DataTypeEnum.adVarChar, // Parameter type (adVarChar)
ADODB.ParameterDirectionEnum.adParamInput, // Parameter direction
200, // Max size
umarketiduselectionid); // Parameter value
cmdInsert.Parameters.Append(paramMS);
object nRecordsAffected = Type.Missing;
object oParams = Type.Missing;
cmdInsert.Execute(out nRecordsAffected, ref oParams,
(int)ADODB.ExecuteOptionEnum.adExecuteNoRecords);
您可以按如下方式更新您的 table :
语法: MSDN
Update YourTable
Set Column = Value
Where Condition
cmdInsert.CommandText = "Update ExchangeTypes Set MarketSelectionId = VALUE
Where MarketSelectionId = '?' ";
ADODB 已过时且已弃用。它的存在只是为了在向前移植时与旧的 vb6 时代代码向后兼容。它应该从不用于新代码。
尝试使用 ADO.Net 代替您的插入:
using (var conn As new SqlConnection("connection string here"))
using (var cmd As new SqlCommand("INSERT INTO ExchangeTypes(MarketSelectionId) VALUES (@MarketSelectionId)", conn)
{
cmd.Parameters.Add("@MarketSelectionId", SqlDbType.VarChar, 200).Value = umarketiduselectionid;
conn.Open();
cmd.ExecuteNonQuery();
}
然后 UPDATE 查询将如下所示:
using (var conn As new SqlConnection("connection string here"))
using (var cmd As new SqlCommand("Update ExchangeTypes SET LayOdds = @LayOdds, Size = @LaySize WHERE MarketId= @MarketId AND SelectionId = @SelectionID ", conn)
{
//Guessing at your column types/lengths here
cmd.Parameters.Add("@LayOdds", SqlDbType.VarChar, 200).Value = layOdds;
cmd.Parameters.Add("@LaySize", SqlDbType.Int).Value = laySize;
cmd.Parameters.Add("@MarketId", SqlDbType.Int).Value = marketid;
cmd.Parameters.Add("@SelectionId", SqlDbType.Int).Value = selectionid;
conn.Open();
cmd.ExecuteNonQuery();
}
这是适用于 Insert 的代码 - 我只需要帮助将其转换为具有值和 where 子句语法的 Update。
ADODB.Command cmdInsert = new ADODB.Command();
cmdInsert.ActiveConnection = conn;
cmdInsert.CommandText = "INSERT INTO ExchangeTypes(MarketSelectionId) VALUES (?)";
//Update statement to be modelled:
//cmdUpdate.CommandText = "Update ExchangeTypes SET
//LayOdds = '" & layOdds & "'" & ",
//Size='" & laySize & "' WHERE
//MarketId='" & marketid & "'" and SelectionId='" & selectionid & "'"
cmdInsert.CommandType = ADODB.CommandTypeEnum.adCmdText;
// Append the parameters
ADODB.Parameter paramMS = cmdInsert.CreateParameter(
"MarketSelectionId", // Parameter name
ADODB.DataTypeEnum.adVarChar, // Parameter type (adVarChar)
ADODB.ParameterDirectionEnum.adParamInput, // Parameter direction
200, // Max size
umarketiduselectionid); // Parameter value
cmdInsert.Parameters.Append(paramMS);
object nRecordsAffected = Type.Missing;
object oParams = Type.Missing;
cmdInsert.Execute(out nRecordsAffected, ref oParams,
(int)ADODB.ExecuteOptionEnum.adExecuteNoRecords);
您可以按如下方式更新您的 table :
语法: MSDN
Update YourTable
Set Column = Value
Where Condition
cmdInsert.CommandText = "Update ExchangeTypes Set MarketSelectionId = VALUE
Where MarketSelectionId = '?' ";
ADODB 已过时且已弃用。它的存在只是为了在向前移植时与旧的 vb6 时代代码向后兼容。它应该从不用于新代码。
尝试使用 ADO.Net 代替您的插入:
using (var conn As new SqlConnection("connection string here"))
using (var cmd As new SqlCommand("INSERT INTO ExchangeTypes(MarketSelectionId) VALUES (@MarketSelectionId)", conn)
{
cmd.Parameters.Add("@MarketSelectionId", SqlDbType.VarChar, 200).Value = umarketiduselectionid;
conn.Open();
cmd.ExecuteNonQuery();
}
然后 UPDATE 查询将如下所示:
using (var conn As new SqlConnection("connection string here"))
using (var cmd As new SqlCommand("Update ExchangeTypes SET LayOdds = @LayOdds, Size = @LaySize WHERE MarketId= @MarketId AND SelectionId = @SelectionID ", conn)
{
//Guessing at your column types/lengths here
cmd.Parameters.Add("@LayOdds", SqlDbType.VarChar, 200).Value = layOdds;
cmd.Parameters.Add("@LaySize", SqlDbType.Int).Value = laySize;
cmd.Parameters.Add("@MarketId", SqlDbType.Int).Value = marketid;
cmd.Parameters.Add("@SelectionId", SqlDbType.Int).Value = selectionid;
conn.Open();
cmd.ExecuteNonQuery();
}