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

C#日時をSQLサーバー日時に変換するとエラーが発生する

    あなたのコードは、現在のように、文字列レベルで値を転送します .これは本当に悪いアプローチです .行われる暗黙的な変換は、システムの設定 (言語と文化) に大きく依存します。最悪の部分は次のとおりです。これは、テスト中はマシンで問題なく動作する可能性がありますが、顧客のシステムでは奇妙なメッセージで中断されます。楽しいデバッグ:-(

    このようにコードを変更してください

    foreach (PropertyInfo prop in props) {
        // Setting column names as Property names.
        if (prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
            dataTable.Columns.Add(prop.Name, prop.PropertyType.GetGenericArguments()[0]);
        else
            dataTable.Columns.Add(prop.Name, prop.PropertyType);
    }
    

    これにより、列が null 許容型であっても、正しいデータ型で追加されます。

    クレジット: この回答が役に立ちました

    UPDATE さらにシンプルに

    (リンクされた回答の下のコメントでYves M.にthx)

    foreach (PropertyInfo prop in props) {
        // Setting column names as Property names.
            dataTable.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
    }
    


    1. MySQLSQLファイルからRubyonRailsデータベース移行ファイルを生成できますか?

    2. JSON_QUERY()SQL Server(T-SQL)の例

    3. SQL Server Ro14でデッドロックの理由を見つける方法は?

    4. 複数のmysqlテーブル列の合計、減算、および結合