对数据库的查询工作正常,并返回行。但是在某个时候,大约在运行程序2分钟后,程序崩溃,出现以下错误。
未处理的异常:System.data.SqlClient.SqlClient.SqlInternalConnection.OnError(SqlCeption异常,Boolean breakConnection,Action1wrapCloseInAction)处的System.data.SqlClient.TdSparser.ThrowExceptionandWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose)处的System.data.SqlClient.TdSparser.TryRun(RunBehavior Run)M.main(string[]args)在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开始时,你的计数会不会从1开始?
这里的问题可能是正在进行的转换是不可能的。INT永远不能为空,它必须为0。您也不能将“null”的varchar/string值转换为int,因为它不表示整数值。
如您得到的异常所述。将varchar值“NULL”转换为数据类型int时转换失败。
尝试使用int32.tryparse。您应该能够捕获并处理空值。