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ます。!= ""null参照は空の文字列と同じではないため、これでもブランチがトリガーされることに注意してください。

多分使用:

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

その代わり?

db-parametersの特徴は、.Valueが。の場合は含まれないことですnull。送信する値を確認してください。

これはあなたの場合には当てはまりません(通常のSQLではNULLに等しいものはないため)が、パラメータとしてNULLを送信する場合は代わりに値をDBNull.Valueに設定する必要があります。

于 2012-06-17T11:12:32.310 に答える