首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

插入数据库, 记录的顺序如何总是不对啊

2012-01-29 
插入数据库, 记录的顺序怎么总是不对啊?下面这段程序,是读取文件中的每一行,然后顺次插入到数据库中,有这

插入数据库, 记录的顺序怎么总是不对啊?
下面这段程序,是读取文件中的每一行,然后顺次插入到数据库中,有这么几个问题:
1.插入后记录的顺序总是不对,虽然我肯定是顺次读取并插入的。
2.Transaction到底要不要commit啊,为什么我没有commit,对结果没什么影响?

Computer   mycomputer   =   new   Computer();
using   (StreamReader   myReader   =   mycomputer.FileSystem.OpenTextFileReader(data_file.FullName,   Encoding.Default))
{
               
using   (OracleConnection   myOracleConnection   =   new   OracleConnection(mySetting.ConnectionString))
                {
                        myOracleConnection.Open();

                        while   (myReader.Peek()   !=   -1)
                        {
                                info   =   myReader.ReadLine();
                                unitname   =   info.Substring(25,   8);


                                #region   insert
                                //OracleTransaction   insert_transaction   =   null;
                                //insert_transaction   =   myOracleConnection.BeginTransaction(IsolationLevel.Serializable);
                                //insert_transaction   =   myOracleConnection.BeginTransaction();

                                try
                                {
                                        string   @insert_string   =   "insert   into   tbdl02   (ser,datatype,result,data,cjrq,cjsj) "
                                                +   "values   (:ser, '   ',0,:data,:cjrq,:cjsj) ";

                                        OracleCommand   insert   =   new   OracleCommand(insert_string,   myOracleConnection);
                                        insert.Parameters.Add( "ser ",   OracleType.Char).Value   =   DateTime.Now.ToString( "yyyyMMddHHmmssffff ")   +   ". "   +   count.ToString()   +   (rnd).Next(5000).ToString();
                                        seed++;
                                        insert.Parameters.Add( "data ",   OracleType.Char).Value   =   info;


                                        insert.Parameters.Add( "cjrq ",   OracleType.Char).Value   =   DateTime.Now.ToString( "yyyyMMdd ");
                                        insert.Parameters.Add( "cjsj ",   OracleType.Char).Value   =   DateTime.Now.ToString( "HHmmss ");

                                        //insert.Transaction   =   insert_transaction;
                                        insert.ExecuteNonQuery();
                                        //insert_transaction.Commit();

                                }
                                catch
                                {
                                        //insert_transaction.Rollback();
                                }
                                #endregion   insert
                        }
                }
}

[解决办法]
插入数据向数据库中,可能自然顺序会和插入的时候不一样,这个和数据类型或是否建立索引有关,如果要保持和插入的顺序一样,那么最好加一个排序的字段然后使用Order by来排序取记录.

事务最好可以不使用Commit,但是这个比较危险,如果数据驱动对象不支持这个默认的操作完后提交,那么可能会自动的放弃所有操作,使用Commit后可以明确的使所有操作一次提交到数据库中.并且最好明确的来调用这个Commit.

热点排行