首页 新闻 会员 周边 捐助

C#中SQLite中的SQLiteTransaction

0
悬赏园豆:10 [已解决问题] 解决于 2016-04-22 13:57

在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 具体是怎么控制的?

youhaoma的主页 youhaoma | 初学一级 | 园豆:193
提问于:2016-04-22 13:27
< >
分享
最佳答案
1
Random ra = new Random();

这行放到for循环外面看看

收获园豆:10
I,Robot | 大侠五级 |园豆:9783 | 2016-04-22 13:48

真的可以了。大神,到底是什么原理啊?是因为每次Random让它超时了,还是Random不能预先读到内存中去啊?

youhaoma | 园豆:193 (初学一级) | 2016-04-22 13:56
其他回答(1)
1

随机数有个种子的原理在里面,默认种子值是从系统时钟派生而来的。 因此,通过调用默认构造函数而频繁创建的不同对象将具有相同的默认种子值,因而会产生几组相同的随机数。

waiter | 园豆:1000 (小虾三级) | 2016-04-22 14:20

谢谢啊!看来要学习的东西还挺多!

支持(0) 反对(0) youhaoma | 园豆:193 (初学一级) | 2016-04-22 14:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册