我在WinCE下将文本文件导入使用SQL MOBILE中,由于数据量比较大,而且文本文件是以‘|’为分隔符,在数据导入的时候老是提示内存不足的情况,我的设备里加了1GB的SD卡,设备内存为32MB,FLASH也是32MB,请问题如何解决这样的问题,源码如下:请问还有没有更好的导入数据库的方法?急!!!谢谢!!!
//读取文本文件内容
using (StreamReader _sReader = new StreamReader(FILE_NAME, Encoding.GetEncoding("gb2312")))
{
while (_sReader.Peek() != -1)
{
_str = _sReader.ReadLine();
_al.Add(_str);
}
}
_Max = _al.Count;
/**/进度条.Maximum = _al.Count;
进度条.Minimum = 0;
进度条.Value = 0;
try
{
using (SqlCeConnection _con = new SqlCeConnection(_ceSql))
{
_con.Open();
foreach (string s in _al)
{
temp = s.Split('|');
if (temp[1].IndexOf('-') != -1)
{
_isbn = temp[1].Replace("-", "");
}
else
{
_isbn = temp[1].ToString();
}
SqlCeCommand _com = new SqlCeCommand(_ceInser, _con);
_com.CommandType = CommandType.Text;
_com.Parameters.Add("@MARC", SqlDbType.NVarChar).Value = temp[0].ToString();
_com.Parameters.Add("@ISBN", SqlDbType.NVarChar).Value = temp[1].ToString();
_com.Parameters.Add("@BOOKNAME", SqlDbType.NVarChar).Value = temp[2].ToString();
_com.Parameters.Add("@NAME", SqlDbType.NVarChar).Value = temp[3].ToString();
_com.Parameters.Add("@PUBLISH", SqlDbType.NVarChar).Value = temp[4].ToString();
_com.Parameters.Add("@YEARS", SqlDbType.NVarChar).Value = temp[5].ToString();
_com.Parameters.Add("@BANCI", SqlDbType.NVarChar).Value = temp[6].ToString();
_com.Parameters.Add("@PRICE", SqlDbType.NVarChar).Value = temp[7].ToString();
_com.Parameters.Add("@SUO", SqlDbType.NVarChar).Value = temp[8].ToString();
_com.Parameters.Add("@ISBN1", SqlDbType.NVarChar).Value = _isbn;
_com.ExecuteNonQuery();
进度条.Value += 1;
Application.DoEvents();
/*int i = (int)((double)进度条.Value / (double)进度条.Maximum * 100);
_Value += 1;
_Percent = (int)((double)_Value / (double)_Max * 100);
百分比.Text = "当前进度:" + _Percent.ToString() + "%";
Application.DoEvents();*/
}
}
if (进度条.Value == 进度条.Maximum)
{
MessageBox.Show("连接数据库成功!");
}
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message);
}
你的数据有多大啊!在这样大量的数据查找中!你只能运用文本查找!去运行操作!!而不是把数据导入数据库去!
100万条记录,我也想文本文件查找,但是文件内有汉字,也有用全角打上的字符,我在对文件进行重新排序的时候,总排不齐!