c# - 必须声明标量变量“@soNum”。一种方法有效,另一种无效
问题描述
这个有效:
private void LogOpen()
{
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Parameters.AddWithValue("@Name", userPrincipal.Name);
sqlCommand.Parameters.AddWithValue("@Opened", DateTime.Now);
string sqlString = "INSERT INTO [Automation].[dbo].[WDAutomationUsage] ([Name], [Opened]) " +
"OUTPUT INSERTED.ID " +
"VALUES (@Name, @Opened)";
sqlCommand.CommandText = sqlString;
if (diagramBuilder.sqlConn.State != System.Data.ConnectionState.Open)
{
diagramBuilder.sqlConn.Open();
}
sqlCommand.Connection = diagramBuilder.sqlConn;
usageID = Convert.ToInt32(sqlCommand.ExecuteScalar());
}
这个没有:
private void LogSONumber(string soNum)
{
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Parameters.AddWithValue("@UsageID", usageID);
//sqlCommand.Parameters.AddWithValue("@SONumber", soNum);
SqlParameter sqlParameter = new SqlParameter("@SONumber", System.Data.SqlDbType.NVarChar, 50);
sqlParameter.Value = soNum;
sqlCommand.Parameters.Add(sqlParameter);
string sqlString = "INSERT INTO [Automation].[dbo].[WDAutomationSONums] ([UsageID], [SONumber]) " +
"OUTPUT INSERTED.ID " +
"VALUES (@usageID, @soNum)";
sqlCommand.CommandText = sqlString;
if (diagramBuilder.sqlConn.State != System.Data.ConnectionState.Open)
{
diagramBuilder.sqlConn.Open();
}
sqlCommand.Connection = diagramBuilder.sqlConn;
usageSOID = Convert.ToInt32(sqlCommand.ExecuteScalar());
}
在第二个中,我收到此错误:
必须声明标量变量“@soNum”
正如你所看到的,我尝试了两种不同的方法来声明 soNum,但我仍然得到同样的错误。请帮忙,这让我发疯了。
解决方案
您只是在您的变量标识符中使用不同的变量标识符,INSERT
而不是作为SqlParameter
.
更改VALUES (@usageID, @soNum)
为VALUES (@usageID, @SONumber)
。
推荐阅读
- python - 如何限制使用pynput按下的键
- c# - C# 在 for 循环期间检查取消令牌
- javascript - Discord.js - UnhandledPromiseRejectionWarning:RangeError [MESSAGE_NONCE_TYPE]:消息随机数必须适合无符号 64 位整数
- ios - 上传图片到服务器时出现绿线
- java - 需要有关 java 泛型问题的帮助
- python - Python RE:如何将文字分割为 0 次或多次 *
- firebase - 将数据传递到详细信息页面颤动
- wordpress - 标签过长时在子菜单中添加换行符
- c# - Unity collider touch 不作用于玩家
- python - 如何在 django 中使用 yolov5 模型