0

データベースにアクセスするためにデータ行から値を挿入しています。行 [1] の値が空白の場合、基準式でデータ型の不一致というエラーがスローされ、値が存在する場合は適切に挿入されます。私がここに欠けているもの。アクセスでは、column1 は Number 型です。

string SNumber = row[1].ToString();

if (SNumber.ToString() != null)
{
    if (SNumber .ToString() != "")
    {
        SNumber = row[1].ToString();
    }
    else
    {
        SNumber = "NULL";
        SNumber = DBNull.Value.ToString();
    }
}

insert into table1 (Column1) values (SNumber);
4

4 に答える 4

0

行[1]がnullの場合、例外も発生すると思います。row[1] が null 許容データ型を返すことができる場合 (質問では明確ではありません)、次のように置き換える必要があります。

 string SNumber = row[1].ToString();

 Number SNumber = row[1];

次に、外側の if ステートメントを次のように置き換えます。

    if (!string.IsNullOrWhiteSpace(SNumber.ToString())) {
    [..]
    }
于 2013-10-22T12:15:16.057 に答える
0

わかりColumn1ました、数値フィールドだと思います。そして、文字列を挿入しようとすると、エラーがスローされます。

SNumber = "NULL"; 

文字列です。それがあった場合:

SNumber = NULL; 

その場合、これは null 値になります。しかし、Nullable int を使用する方が良いかもしれません - Nullable types MSDN

int? num = null;

値も保持できるという疑問点NULL。お役に立てれば。

于 2013-10-22T12:39:27.230 に答える
0

すべてのコードを三項演算子に置き換えることができます。

string query = "insert into table1 (Column1) values (" + 
        ((row[1] != null && row[1].ToString() != String.Empty) 
            ? row[1].ToString() 
            : null)
    + ") etc... etc...";

あなたが何を望んでいるかを正しく理解していれば。行 [1] が null または空の場合は、null を挿入します。それ以外の場合は、行 [1] の値を挿入します。

于 2013-10-22T12:27:09.520 に答える