在C#中在SQLite的一个表中插入数据时候,数据中使用了Random,同时也使用了conn.BeginTransaction(),效率是提高了,但Y值不是Random来的,而都是同一个数字。
SQLiteTransaction trans = conn.BeginTransaction();
try
{
for (int i = 1; i <= 10; i++)
{
parentCommand.CommandText = "insert into Parent(ParentID, Name) values (?, ?)";
parentCommand.Parameters[0].Value = i.ToString(); parentCommand.Parameters[1].Value = ("数据" + i).ToString();
parentCommand.ExecuteNonQuery();
for (int j = 0; j < 50; j++)
{
Random ra = new Random();
int k = ra.Next(100, 500);
sonCommand.CommandText = "insert into Son(SonID, Number, X, Y) values (?, ?, ?, ?)";
sonCommand.Parameters[0].Value = i.ToString();
sonCommand.Parameters[1].Value = (1 + j).ToString();
sonCommand.Parameters[2].Value = (2000 + j).ToString();
sonCommand.Parameters[3].Value = k.ToString();
sonCommand.ExecuteNonQuery();
}
}
trans.Commit();
}
catch
{
trans.Rollback();
}
新手,求高人指教!SQLiteTransaction 具体是怎么控制的?
Random ra = new Random();
这行放到for循环外面看看
真的可以了。大神,到底是什么原理啊?是因为每次Random让它超时了,还是Random不能预先读到内存中去啊?
随机数有个种子的原理在里面,默认种子值是从系统时钟派生而来的。 因此,通过调用默认构造函数而频繁创建的不同对象将具有相同的默认种子值,因而会产生几组相同的随机数。
谢谢啊!看来要学习的东西还挺多!