WinCE4.0使用SQL MOBILE数据库问题!!!!(导入大量文本文件,在线急等,谢谢!!!!!)

mcuwing   2007-10-19 11:31 楼主
我在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);
                    }

回复评论 (2)

你的数据有多大啊!在这样大量的数据查找中!你只能运用文本查找!去运行操作!!而不是把数据导入数据库去!
点赞  2007-10-19 11:53
100万条记录,我也想文本文件查找,但是文件内有汉字,也有用全角打上的字符,我在对文件进行重新排序的时候,总排不齐!
点赞  2007-10-19 16:47
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复