使用C#向SQL Server插入数据时,报错Object reference not set to an instance of an object

代码如下:
连续插入很多条数据,其中就会突然报两次Object reference not set to an instance of an object.

DbConnection cnn;(这里是提前new过的,一直保持的连接状态)
string sqlString = "INSERT INTO [dbo].[Events] VALUES (N'{XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXX}',1000,N"HAHA');
DbCommand cmd = new SqlCommand(queryString,cnn as SqlConnction);

try
{
cmd.Transaction = cnn.BeginTransaction();
cmd.CommandText = sqlString;
cmd.ExcuteNonQuery();
cmd.Transation.Commit();
}
catch(Exception e)
{
....
}

cnn先new实例化下看看

//str为数据库连接字符串
 DbConnection cnn = new MySqlConnection(str); 

c#中最好不要用长连接,当这个连接再其他地方使用还没有被释放的时候,可能会出错。特别是多个线程同时使用的话,很容易冲突。因为有时候查询等待数据库返回等操作对于操作系统来说是很漫长的。这过程很容易冲突。还有就是不知道你有没有其他的关闭操作。万一有一个sql执行出错了,你就把他close掉了。其他地方使用就会出错。