将号码归属地导入数据库不成功为什么

唧歪唧歪 2012-06-03 03:10:49
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog dlg = new FolderBrowserDialog();
if (dlg.ShowDialog() != DialogResult.OK)
{
return;
}
string path = dlg.SelectedPath;
string connStr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString ;
using (SqlConnection conn = new SqlConnection (connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand ())
{
cmd.CommandText = "delete from T_Numbers";
cmd.ExecuteNonQuery();
}
}
string[] files = Directory.GetFiles(path,"*.txt", SearchOption.AllDirectories );

using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Insert into T_Numbers(StarNo,EndNo,Name)values(@starno,@endno,@name)";
foreach (string file in files)
{
string 运营商名称 = Path.GetFileNameWithoutExtension(file);
string[] lines = File.ReadAllLines(file, Encoding.Default);//不用streamreader文件很小,一次性加载不占用很大内存
//ReadAllLines默认编码是UTF-8 Encoding .Default
foreach (string line in lines)
{
string[] strs = line.Split('-');
string 开始号码 = strs[0];
string 结束号码 = strs[1];
string 市 = strs[2];
cmd.Parameters.Clear();
cmd.Parameters.Add(new SqlParameter("starno",开始号码 ));
cmd.Parameters.Add(new SqlParameter("endno",结束号码 ));
cmd.Parameters.Add(new SqlParameter("name",运营商名称 +市));
cmd.ExecuteNonQuery();
}
}
}
}
MessageBox.Show("导入成功");


}
...全文
112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
唧歪唧歪 2012-06-03
  • 打赏
  • 举报
回复
非常感谢,找到原因了
[Quote=引用 7 楼 的回复:]
id字段必须是自动编号的才能不需要赋值。


另外

你还可以直接赋值测试下

cmd.Parameters.AddWithValue("@starno","13003000000");
cmd.Parameters.AddWithValue("@endno","13003000000");
cmd.Parameters.AddWithValue("@name","合肥");
……
[/Quote]
孟子E章 2012-06-03
  • 打赏
  • 举报
回复
id字段必须是自动编号的才能不需要赋值。


另外

你还可以直接赋值测试下

cmd.Parameters.AddWithValue("@starno","13003000000");
cmd.Parameters.AddWithValue("@endno","13003000000");
cmd.Parameters.AddWithValue("@name","合肥");


另外,你需要注意看你插入的数据库跟你检查的数据库确保是一个库


另外
你看看是否进入到了
foreach (string line in lines)
{}
里面
唧歪唧歪 2012-06-03
  • 打赏
  • 举报
回复
试了下还没行,还有个ID字段,数据类型是这样的:
13003000000-13003009999-合肥
13003010000-13003029999-蚌埠
13003030000-13003049999-芜湖
13003050000-13003069999-合肥
13003070000-13003079999-淮南
13003080000-13003089999-合肥
13003090000-13003099999-巢湖
13004000000-13004009999-淮南
13004010000-13004039999-阜阳
[Quote=引用 5 楼 的回复:]
没有报告错误吗

using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Insert into T_Numbers([StarNo],[EndNo],[Name]) values(@starno,@endno,@name)";
foreach (string file in files)
{……
[/Quote]
孟子E章 2012-06-03
  • 打赏
  • 举报
回复
没有报告错误吗

using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Insert into T_Numbers([StarNo],[EndNo],[Name]) values(@starno,@endno,@name)";
foreach (string file in files)
{
string 运营商名称 = Path.GetFileNameWithoutExtension(file);
string[] lines = File.ReadAllLines(file, Encoding.Default);//不用streamreader文件很小,一次性加载不占用很大内存
//ReadAllLines默认编码是UTF-8 Encoding .Default
foreach (string line in lines)
{
string[] strs = line.Split('-');
string 开始号码 = strs[0];
string 结束号码 = strs[1];
string 市 = strs[2];
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@starno",开始号码);
cmd.Parameters.AddWithValue("@endno",结束号码);
cmd.Parameters.AddWithValue("@name",运营商名称 +市);
cmd.ExecuteNonQuery();
}

这样测试下

另外,T_Numbers表的其他字段都是不需要赋值的吗
唧歪唧歪 2012-06-03
  • 打赏
  • 举报
回复
没有错误,数据导不了
[Quote=引用 2 楼 的回复:]
请给出错误信息。
自己试着断点调式。
[/Quote]
唧歪唧歪 2012-06-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你先打印出
开始号码
结束号码


这些值的内容是不是正确,是不是符合数据库字段的类型
[/Quote]
怎么打印
zhujiawei7 2012-06-03
  • 打赏
  • 举报
回复
请给出错误信息。
自己试着断点调式。
孟子E章 2012-06-03
  • 打赏
  • 举报
回复
你先打印出
开始号码
结束号码


这些值的内容是不是正确,是不是符合数据库字段的类型

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧