日期:2014-05-18  浏览次数:20819 次

请教:如何将txt保存的IP地址导入到数据库中
C# code

            openFileDialog1.Filter = "文本文件(*.txt)|*.txt";
            if (openFileDialog1.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            using(FileStream fileStream = File.OpenRead(openFileDialog1.FileName))
            {
                using(StreamReader streamReader = new StreamReader(fileStream, Encoding.Default))
                {
                    string ConnStr = ConfigurationManager.ConnectionStrings["IP连接字符串"].ConnectionString;
                    using(SqlConnection conn = new SqlConnection(ConnStr))
                    {
                        using(SqlCommand cmd = new SqlCommand("Insert into IPAddress(StartIP,EndIP,Country,Name) values (@StartIP,@EndIP,@Country,@Name)",conn))
                        {
                            string line = null;
                            conn.Open();
                            while ((line = streamReader.ReadLine()) != null)
                            {
                                string[] strs = line.Split(' ');
                                string Start = strs[0];
                                string End = strs[1];
                                string Country = strs[2];
                                string Name = strs[3];

                                cmd.Parameters.Clear();
                                cmd.Parameters.Add(new SqlParameter("StartIP",Start));
                                cmd.Parameters.Add(new SqlParameter("EndIP", End));
                                cmd.Parameters.Add(new SqlParameter("Country", Country));
                                cmd.Parameters.Add(new SqlParameter("Name", Name));
                                cmd.ExecuteNonQuery();
                            }
                        }
                        MessageBox.Show("导入成功!");
                    }
                }
            }
        }



在string name = strs[3];超出索引范围

IP地址如下示:

0.0.0.0 0.255.255.255 IANA CZ88.NET
1.0.0.0 1.51.255.255 IANA CZ88.NET
1.52.0.0 1.52.255.255 美国 CZ88.NET
1.53.0.0 1.153.255.255 IANA CZ88.NET
1.154.0.0 1.154.255.255 美国 CZ88.NET
1.155.0.0 1.255.255.255 IANA CZ88.NET
2.0.0.0 2.255.255.255 IANA CZ88.NET
3.0.0.0 3.255.255.255 美国 康涅狄格州费尔菲尔德县费尔菲尔德镇通用电气公司
4.0.0.0 4.255.255.255 美国 科罗拉多州布隆菲尔德市Level 3通信公司
5.0.0.0 5.147.255.255 IANA CZ88.NET
5.148.0.0 5.148.255.255 加拿大 CZ88.NET
5.149.0.0 5.255.255.255 IANA CZ88.NET

------解决方案--------------------
设置断点调试,看看strs,数组包括几项
------解决方案--------------------
每次读一行,然后用string[] strItems = Split(new char[] { ' ' }); 
按照空格拆分一行的内容,前两个字符串就对应StartIP,EndIP字段了。
------解决方案--------------------
出错位置设置断点
看看Country的值,是不是分组有问题 空格split经常出问题