程序中执行循环执行SQL插入,但数据进入数据库的顺序确不一样

来源:百度知道 编辑:UC知道 时间:2024/06/10 10:30:13
我的程序从一个TXT文件中读取一行,并按"|"拆分后拼成一句SQL语句,然后执行.
拆分,拼SQL语句,执行,这三个过程都是在for循环内完成的.按道理说应该读取一行往数据库中插入一行,这样数据库中的数据库排列顺序应该和txt中一致. 但是实际运行后发现某些数据排序与TXT却不一样,先后次序混乱了.比如TXT中是:
1|2|3|
2|1|3|
3|2|1|

进入数据库再查询出来却变成了:
1|2|3|
3|2|1|
2|1|3|

请问有没有人能够解决这个问题呢?
变量都在循环里重新定义,并赋值的.循环代码如下: count是txt文件总行数.
for (int jj = 0; jj < count; jj++)
{
line = sr.ReadLine();
string[] arrStr = line.Split('|');
if (arrStr.Length != 25)
{
throw new Exception("当前指定数据文件无法转换.出错行为:" + jj.ToString() + "");
}
string a, b, c, d, ee, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x;
a = arrStr[0].ToString().Trim();
b = arrStr[1].ToString().Trim();
c = arrStr[2].ToString().Trim();
...
sSQL = "insert into tblDetails values('" + Pno + "','" + a + "','" + b + "','" + c + "', ... ,'"

你首先确定你每次读入的是否为完整一行(这个你连续看两行就应该能确定),其次再确认一下接收的串和中间变量是否及时清空

看你的程序应该没有问题,你检查一下txt文件中是否有乱码等不能显示的字符,如果你有unix环境就拿到那个下面用vi看一下,如果没有用ultraedit或者editplus都可以,不过这两个打开你这个20w行的文件可能会比较困难,要不你就改一下你现在这个程序,判断一下ascii码

建表时增加ID int identity(1,1)
然后倒入,这样ID自动产生顺序号。建立索引在ID上。

数据库不会出现这种问题吧,估计是你循环出乱子了!贴出来看看