データベースのクエリが正常に動作し、行が返されています。 しかし、ある時点で、プログラムの実行に約2分かかると、以下のエラーでクラッシュします。Convertion failedエラーの原因となるC#sqlDataReader.Read()
未処理の例外:System.Data.SqlClient.SqlException:データ型intにVARCHAR値 'NULL' を変換するときの変換 に失敗しました。 システムでSystem.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj、ブールcallerHasConnectionLock、ブールasyncClose)でSystem.Data.SqlClient.SqlConnection.OnError(SQLException例外、 ブールbreakConnection、アクション
1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction)で
システムで.Data.SqlClient.TdsParser.TryRun(runBehavior runBehavior、 SqlCommandオブジェクトcmdHandler、SqlDataReaderのデータストリーム、 BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj、ブール& DATAREADY) System.Data.SqlClient.SqlDataReader.TryHasMoreRows(ブール& moreRows)で Cで TrackChanges.Program.Main(文字列[] args)をで System.Data.SqlClient.SqlDataReader.Read()で.Data.SqlClient.SqlDataReader.TryReadInternal(ブール のsetTimeout、ブール&より):\ Users \ユーザーari.downey \ Documents \ Visual Studio 2015 \ Projects \ TrackChanges \ TrackChanges \ Program.cs:line 31 キーを押して続行します。 。 。
using (SqlCommand cmd = new SqlCommand(query, conn))
{
conn.Open();
SqlDataReader read = cmd.ExecuteReader();
while (read.Read())
{
if (read[4].ToString().ToUpper() != columns[4].ToUpper())
{
for (int i = 0; i < read.FieldCount; i++)
Console.Write(read[i] + " || " + columns[i] + " ");
Console.WriteLine(" ");
}
}
conn.Close();
}
私はコードがプレーンテキストであることをお詫び申し上げます。私はより多くの評判を得るために質問をする必要がありますが、これ以外の質問はありません。
質問を編集して実行できない場合は、質問に追加できるように質問を編集して追加してください。 – bradbury9
未処理の例外:System.Data.SqlClient.SqlException:**変換 varchar値 'NULL'をデータ型intに変換すると失敗しました。**。ヌルを確認する必要があります –
SQLデータベースを照会するときは、照会でパラメーターを使用する必要があります。それ以外の場合、ドライブはデータ型を推測しようとしますが、間違った推測をすることもあります。 ExcelブックのGENERALセルタイプのようなものです。 – jdweng