【问题标题】:SqlException was unhandled by c# - in System.Data.dllc# 未处理 SqlException - 在 System.Data.dll 中
【发布时间】:2015-11-07 15:00:32
【问题描述】:

所以当我收到此错误时,我正在尝试运行我的代码:

System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理 附加信息:'b' 附近的语法不正确。

代码如下所示:

            string query = "select a.Navn from Ejer a" +
                       "INNER JOIN SlipsEjer b ON a.Id = b.EjerId" +
                       "Where b.SlipsId = SlipsId";

        using (connection = new SqlConnection(connectionString))
        using (SqlCommand command = new SqlCommand(query, connection))
        using (SqlDataAdapter adapter = new SqlDataAdapter(command))
        {
            command.Parameters.AddWithValue("@SlipsId", SlipsLB.SelectedValue);

            DataTable ejerTable = new DataTable();
            adapter.Fill(ejerTable);

            EjerLB.DisplayMember = "Navn";
            EjerLB.ValueMember = "Id";
            EjerLB.DataSource = ejerTable;
        }

我不知道为什么..我已经尝试通过 Sql 中的新查询运行它,它在那里工作正常..

真的希望你们能帮忙!谢谢

【问题讨论】:

    标签: c# sql datatable inner-join using


    【解决方案1】:

    在每行末尾添加一个空格。还要为参数添加一个@符号。

    string query = "select a.Navn from Ejer a " +
                   "INNER JOIN SlipsEjer b ON a.Id = b.EjerId " +
                   "Where b.SlipsId = @SlipsId";
    

    有人建议在评论中使用逐字字符串。这是逐字字符串的示例。您可以轻松地从 Management Studio 复制您的查询。虽然我更喜欢使用存储过程。

    string query = @"
    select a.Navn from Ejer a
    INNER JOIN SlipsEjer b ON a.Id = b.EjerId
    Where b.SlipsId = @SlipsId
    ";
    

    【讨论】:

    • 非常感谢!是的,我之前有一个@,一定是误删了!但不知道空格会起作用!谢谢@Handoko.Chen
    • 同时使用逐字字符@ 将有助于避免这些错误。
    • 不加空格会是这样的:select a.Navn from Ejer aINNER JOIN SlipsEjer b ON a.Id = b.EjerIdWhere b.SlipsId = @SlipsId.
    猜你喜欢
    • 1970-01-01
    • 2018-03-23
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多