本帖最后由 9881008杜鹏 于 2011-11-17 04:21 编辑
在把数据导入数据库时,中文字符出现了乱码,插入语句(如):insert into promary values(1,N'北京市'),中文字符钱已经加了N,在设置数据库的字段类型是:nvarchar(50)。导入数据的代码如下:
FolderBrowserDialog dlg = new FolderBrowserDialog();//弹出目录对话框控件引用的类
if (dlg.ShowDialog() != DialogResult.OK)
{ return; }
string path = dlg.SelectedPath;
String connString = ConfigurationManager.ConnectionStrings["Connstring"].ConnectionString;//在“添加--新建项--应用程序配置文件”,添加一个配置文件,然后在该文件中加入以下代码:
//<connectionStrings ><add name ="Connstring" connectionString ="Data Source =.\SQLEXPRESS;AttachDBFilename = |DataDirectory|\Database1.mdf;Integrated Security= true ;User Instance=true"></add></connectionStrings>;
//最后添加“引用”在.net类库里引用:“System.configuration”
string[] files = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories);//获取文件的文件名。SearchOption.AllDirectories获取该文件夹中的所有文件(包括子文件夹的内容);
//而SearchOption.TopDirectoryOnly只获取该文件夹下地文件(不包含子文件夹)
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "insert Phone(Number,Address)values(@number,@address)";
foreach (string file in files)
{
string 运营商信息 = Path.GetFileNameWithoutExtension(file);
string[] lines = File.ReadAllLines(file );//不用StreamReader是因为文件很小一次性加载不占多少内存
//StreamReader reader = new StreamReader(file);
//string lines = null;
// while ((lines = reader.ReadLine())!=null)
foreach (string line in lines)
{
// MessageBox.Show(line );
string[] str = line.Split('@');
string num = str[0];
string Addresslist = str[1];
cmd.Parameters.Clear();
cmd.Parameters.Add(new SqlParameter("number", num));
cmd.Parameters.Add(new SqlParameter("address", Addresslist));
cmd.ExecuteNonQuery();
}
}
}
}
MessageBox.Show("数据导入成功!");
|