c# - Visual Studio 中的数据库问题(c# 和 SQL Server)
问题描述
我正在编写一个 Windows 窗体应用程序,我必须在其中模拟记录谁在课堂上失踪的人数。我在 Visual Studio 中创建了一个运行良好的数据库。我还在youtube上找到了一个关于如何做的教程,所以我做到了。在视频的一部分中,他在查询中放置了一个“@(表中变量的名称)”而不是一个值。对他来说有效,对我来说无效,我不知道为什么。请帮忙。
private void napuniUcenici()
{
string query = "SELECT a.Ime FROM Ucenici a " +
"INNER JOIN RazrediUcenici b ON a.Id = b.UcenikId " +
"WHERE b.RazredId = @RazredId";
using (connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(query, connection))
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
command.Parameters.AddWithValue("@RazredId", lstUcenici.SelectedValue);
DataTable uceniciTable = new DataTable();
adapter.Fill(uceniciTable);
lstUcenici.DisplayMember = "Ime";
lstUcenici.ValueMember = "Id";
lstUcenici.DataSource = uceniciTable;
}
}
当我在代码中调用此函数时会发生这种情况。它返回这个按摩:
System.Data.SqlClient.SqlException:
'参数化查询'(@RazredId nvarchar(4000))SELECT a.Ime FROM Ucenici a INNER JOIN'需要参数'@RazredId',但未提供。'
此外,RazredId
不是 a navchar(4000)
,它是一个常规整数。视频中的那个人没有这个问题。
视频:https ://www.youtube.com/watch?v=_PCBTiXL884
[ 1
[ 2
[ 3
解决方案
尝试传递一个显式值: command.Parameters.AddWithValue("@RazredId", 1); 看看发生了什么。与以前的回复不同,在参数名称中保留 @ 是正确的。
推荐阅读
- php - 如何根据模型属性之一的值进行动态预加载?
- r - 如何更改ggplot中的点形状
- r - 分类变量的最佳子集选择方法
- python - 为了可读性,Python 给出另一个名称而不是 `*args` 是一种好习惯吗?
- sas - SAS中不同格式的相同日期值是否相同?
- tensorflow - 是否可以在keras中恢复global_step?
- python - 减少函数因三个参数而失败,并且在 python 中使用两个参数运行良好
- azure - 在 Azure 上将卷添加到 Terraform AKS 群集时出现错误“没有这样的主机”
- ruby-on-rails - Rails caches_page 没有读取实例变量并抛出错误
- php - 已解决 - PHP-Curl 无法在 Ubuntu 12.04LTS 中运行。错误 500