首页 > 解决方案 > 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

标签: c#sql-serverwinforms

解决方案


尝试传递一个显式值: command.Parameters.AddWithValue("@RazredId", 1); 看看发生了什么。与以前的回复不同,在参数名称中保留 @ 是正确的。


推荐阅读