读书人

安插数据库 不报错 但也没有数据

发布时间: 2013-04-20 19:43:01 作者: rapoo

插入数据库 不报错 但也没有数据
C#代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;

namespace 手机归属地导入查询
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

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_PhoneInfo";
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_PhoneInfo(sEndNo,sName,sStartNo) values(@sEndNo,@sName,@sStartNo)";



foreach (string file in files)//遍历文件名
{
string 运营商名称 = Path.GetFileNameWithoutExtension(file);
//不用StreamReader,因为文件很小,
string[] lines = File.ReadAllLines(file, Encoding.Default);
//一次性加载,也不占多少内存,ReadAllLines默认编码是UTF-8

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("sEndNo", 结束号码));
cmd.Parameters.Add(new SqlParameter("sName", 运营商名称 + 市));
cmd.Parameters.Add(new SqlParameter("sStartNo", 开始号码));

cmd.ExecuteNonQuery();
//int i;
//i = cmd.ExecuteNonQuery();
//MessageBox.Show(i.ToString());
//MessageBox.Show(运营商名称 + 市);


}
}
}
}
MessageBox.Show("导入成功!");
}
}
}



program.cs中已添加
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
if (dataDir.EndsWith(@"\bin\Debug")
|| dataDir.EndsWith(@"\bin\Release"))
{
dataDir = System.IO.Directory.GetParent(dataDir).Parent.FullName;
AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
}


配置文件已有:
<connectionStrings>
<add name="ConnStr" connectionString="Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\phone.mdf;
Integrated Security=True;User Instance=True"/>
</connectionStrings>


没有报错,各种调试和输出都没问题,就是插不进去数据库。求解
[解决办法]



String connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
private void button1_Click(object sender, EventArgs e)
{

FolderBrowserDialog dlg = new FolderBrowserDialog();
if (dlg.ShowDialog() != DialogResult.OK)
{
return;
}
string path = dlg.SelectedPath;

using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "delete from T_PhoneInfo";


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_PhoneInfo(sEndNo,sName,sStartNo) values(@sEndNo,@sName,@sStartNo)";

foreach (string file in files)//遍历文件名
{
string 运营商名称 = Path.GetFileNameWithoutExtension(file);
//不用StreamReader,因为文件很小,
string[] lines = File.ReadAllLines(file, Encoding.Default);
//一次性加载,也不占多少内存,ReadAllLines默认编码是UTF-8

foreach (string line in lines)
{
string[] strs = line.Split('-');
string 开始号码 = strs[0];
string 结束号码 = strs[1];
string 市 = strs[2];
InsertExecuteNonQuery(开始号码, 结束号码, 市);
//这里的不要了


}
}
}
}
MessageBox.Show("导入成功!");
}

public int InsertExecuteNonQuery(string sEndNo, string sName, string sStartNo)
{
string sqlString = "Insert into T_PhoneInfo(sEndNo,sName,sStartNo) values(@sEndNo,@sName,@sStartNo)";
String connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

using (SqlConnection connetion = new SqlConnection(connStr))
{
connetion.Open();
using (SqlCommand Command = new SqlCommand(sqlString, connetion))
{
SqlParameter[] param = new SqlParameter[]
{
new SqlParameter("@sEndNo", sEndNo),
new SqlParameter("@sName", sName),
new SqlParameter("@sStartNo", sStartNo)

};
Command.Parameters.AddRange(param);
return Command.ExecuteNonQuery();
}
}
}


------解决方案--------------------


我也遇到过这个问题,把<add name="ConnStr" connectionString="Data Source=.\SQLEXPRESS;AttachDBFilename=
[解决办法]
DataDirectory
[解决办法]
\phone.mdf;
Integrated Security=True;User Instance=True"/>里路径AttachDBFilename改为绝对路径试下

读书人网 >C#

热点推荐