sql >> データベース >  >> RDS >> Sqlserver

取得エラー:SQL でデータ型 nvarchar を数値に変換中にエラーが発生しました

    通常、string を渡すことは問題ありません。 SQL Server が文字列の内容を数値自体に変換できる限り、数値のパラメーターに変換します。それが機能しない場合、このエラーが発生します。

    例:"Hello" を渡す 数値のパラメーターに変更すると、エラーが発生します。 "1234" を渡す あなたはそうしない。空の文字列または空白を含む文字列は数値に変換できないことに注意してください!

    しかし、そうするのはスタイルが良くないと言わざるを得ません。問題を回避するために、アプリケーションで使用する型がデータベースの型と一致していることを確認する必要があります。 string が必要な理由について、さらに詳しく説明するかもしれません アプリケーションの型が役立つ場合があります。

    編集 1
    パラメータをクエリのオプションにする方法は次のとおりです:

    <オール>
  1. SQL ステートメントを変更して、WHERE RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID) のようなオプション パラメータを許可します。 .
  2. @Raumklasse_ID を追加しないでください オプションにするか、値 DBNull.Value を追加する必要がある場合はパラメーター
  3. string を変更することを本当に検討する必要があります int? のような null 許容型へのプロパティ .

    編集 2
    編集 1 で提案した変更を実装したコードは次のようになります。

    using (SqlCommand cmd = new SqlCommand(@"SELECT r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID FROM RAUM r WHERE RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID) OR STADT_ID = ISNULL(@Stadt_ID, STADT_ID) OR GEBAEUDE_ID = ISNULL(@Gebaeude_ID, GEBAEUDE_ID) OR REGION_ID = ISNULL(@Region_ID, REGION_ID)", con)) 
    {
        con.Open();
        if (!String.IsNullOrWhitespace(RAUMKLASSE_ID))
            cmd.Parameters.AddWithValue("@Raumklasse_ID", RAUMKLASSE_ID);
        else
            cmd.Parameters.AddWithValue("@Raumklasse_ID", DBNull.Value);
        if (!String.IsNullOrWhitespace(STADT_ID))
            cmd.Parameters.AddWithValue("@Stadt_ID", STADT_ID);
        else
            cmd.Parameters.AddWithValue("@Stadt_ID", DBNull.Value);
        if (!String.IsNullOrWhitespace(GEBAEUDE_ID))
            cmd.Parameters.AddWithValue("@Gebaeude_ID", GEBAEUDE_ID);
        else
            cmd.Parameters.AddWithValue("@Gebaeude_ID", DBNull.Value);
        if (!String.IsNullOrWhitespace(REGION_ID))
            cmd.Parameters.AddWithValue("@Region_ID", REGION_ID);
        else
            cmd.Parameters.AddWithValue("@Region_ID", DBNull.Value);
        ...
    }
    


    1. Oracleで文字列の最後のインデックスを検索する

    2. 2つのテーブルmysqlを結合する方法は?

    3. キータイプと参照を含むMYSQLテーブル列の表示

    4. WebアプリケーションのJavaからOracleNLS_LANGUAGEを設定します