3

我正在用 C# 开发一个应用程序,当我与数据库 SQL Server 交互时,它给了我“必须声明标量变量”的例外情况。代码如下

public DataTable Search(string clas)
{
    try
    {
        DataTable table = new DataTable();
        string query = "";
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            if (clas != "")
            {
                query = "Select * from StudentManagement Where classEnrolled=@cls";
                //dataAdapter
                dataAdapter = new SqlDataAdapter(query, connectionString);
                dataAdapter.SelectCommand.Parameters.Add(new SqlParameter("cls", clas));
            }

            dataAdapter = new SqlDataAdapter(query, connectionString);
            // Create a command builder to generate SQL update, insert, and
            // delete commands based on selectCommand. These are used to
            // update the database.
            SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

            // Populate a new data table and bind it to the BindingSource.
            table.Locale = System.Globalization.CultureInfo.InvariantCulture;
            dataAdapter.Fill(table);
        }
        return table;
    }
    catch (Exception e)
    {
        return null;
    }    
}

请帮我

4

1 回答 1

2

我强烈怀疑这clas是一个 null参考。请注意,这仍然会触发您的!= ""分支,因为空引用与空字符串不同。

也许使用:

if(!string.IsNullOrEmpty(clas)) {...}

反而?

db-parameters 的一个特点是,如果 .Value 为 ,则不包括它们null。检查您发送的值。

它不适用于您的情况(因为在普通 SQL 中没有任何东西等于 NULL)但是:如果您打算将 NULL 作为参数发送,则必须将值设置为 DBNull.Value。

于 2012-06-17T11:12:32.310 回答