插入数据库, 记录的顺序怎么总是不对啊?
下面这段程序,是读取文件中的每一行,然后顺次插入到数据库中,有这么几个问题:
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.