数据库的查询工作正常并返回行。 但是在某些时候,运行程序大约2分钟后,它崩溃了下面的错误。
未处理的异常:System.Data.SqlClient.SqlException:转换 转换varchar值时失败' NULL'数据类型int。
在System.Data.SqlClient.SqlConnection.OnError(SqlException异常, 布尔值breakConnection,Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose)at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler,SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,布尔& dataReady)at System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows) 在System.Data.SqlClient.SqlDataReader.TryReadInternal(布尔值 setTimeout,Boolean&更多) System.Data.SqlClient.SqlDataReader.Read()at TrackChanges.Program.Main(String [] args)in C:\ Users \ ari.downey \ Documents \ Visual Studio 2015 \ Projects \ TrackChanges \ TrackChanges \ Program.cs:第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();
}
我很抱歉代码是纯文本。我需要提出一个问题来获得更多的声誉,但除此之外我没有任何相关的问题要问。
答案 0 :(得分:0)
当数组数据从0开始时,你的计数是否从1开始?
答案 1 :(得分:0)
这里的问题可能是无法进行转换。 INT永远不能 NULL ,它必须是 0 。您也不能将'NULL'的varchar / string值转换为int,因为它不代表整数值。
正如您所获得的例外情况所述。 将varchar值'NULL'转换为数据类型int时,转换失败。
尝试使用 Int32.TryParse 。您应该能够捕获并处理 NULL 值。