2011-10-20 23 views
2

フィールドの1つがNULLを許可しない "InDatabase"(SQL Serverの "ビット"タイプ) 。私はテーブルを作成し、InDatabaseは常に値が代入され、それに数百行を追加SqlBulkCopyがInvalidOperationExceptionを返すNULL値を挿入しようとしていますが、すべての値がテーブル内でNULLでないエラー

は、私がSqlBulkCopyを呼び出すと、それは私与えている

(InDatabaseは、行が別のデータベースにあるかどうかを参照します)各行は、このようなとして作成され

"Column 'InDatabase' does not allow DBNull.Value." 

ProductionDatabaseDataSet.EntriesV2Row NewRow = this.InsertTable.NewEntriesV2Row(); 

NewRow.MeetEntryID = MeetEntryID; 
NewRow.EventID = EventID; 
NewRow.MeetID = MeetID; 
NewRow.AthleteID = AthleteID; 
NewRow.Exhibition = Exhibition; 
NewRow.Bonus = Bonus; 
NewRow.EnterEvent = true; 
NewRow.InDatabase = true; 
if (AutoTime != null) 
    NewRow.AutoTime = AutoTime ?? -1; 
if (CustomTime != null) 
    NewRow.CustomTime = CustomTime ?? -1; 

this.InsertTable.AddEntriesV2Row(NewRow); 

続いて、後は上記の300 TIの周りと呼ばれるのメッセージとInvalidOperationExceptionがエラー、 SqlBulkCopyは、次のように呼び出されます。

SqlBulkCopy bulkCopy = new SqlBulkCopy(this.Connection.ConnectionString); 
bulkCopy.DestinationTableName = this.Adapter.TableMappings[0].DataSetTable; 
      bulkCopy.BatchSize = BatchSize; 
bulkCopy.WriteToServer(InsertTable); //Throwing the error 

私はこの全く同じ形式を使用して、

+0

InsertTableは? これは1行で機能しましたか? – Boomer

+0

いいえ1行では機能しません。 – user1004944

+0

私は疑問に思っています.URLは正常に表示されているのでここに入力してください – Boomer

答えて

1

OKをチェックし、私はそれが動作するようになったが、実際にそれを考え出したていません。私はこれにバルク・コピー・セクションを変更:私はこのようなマッピングが働いていたテーブルを設定せずにこれをしなかったが、いくつかの理由のために、このテーブルで、それは私がない限り動作しません

bulkCopy.DestinationTableName = this.Adapter.TableMappings[0].DataSetTable; 
for (int i = 0; i < this.Adapter.TableMappings[0].ColumnMappings.Count; i++) 
    bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping(
       this.Adapter.TableMappings[0].ColumnMappings[i].SourceColumn.ToString(), 
       this.Adapter.TableMappings[0].ColumnMappings[i].DataSetColumn.ToString())); 
bulkCopy.BatchSize = BatchSize; 


bulkCopy.WriteToServer(InsertTable); 

ない本当のことを確認なぜダース他の回上記を行う。

0

私が正しくあなたの問題を理解している場合...

は、私はこの問題はc# .netSQLNULL値を定義していると思います。プログラミング言語のNULLの平均はSQLでは同じではありません。 SQLで

によってrepresnt NULL値がどれだけにHandle Null and DBNull

+0

しかし、その列のエントリのいずれもnullではないので問題ありませんか? – user1004944

+0

エラーメッセージを読んでください: 'null'または' DBNull'値がどこかにあります。行を作成すると、 'Bonus'はどこから来ますか?あなたはデータベースからそれを読んだことがありますか?それは 'DBNull'の可能性があります。 –

+0

ボーナスは決してnullではありません。これまでにnullになるのは、AutoTimeとCustomTimeだけです。これらをDBNullに設定すると、例外がスローされるかどうかに違いはありません。 DBNull値は、これらの値に対してデータベースで受け入れられます。 – user1004944

関連する問題