private void btninsert_Click(object sender, EventArgs e)
{
if (odimport.ShowDialog() == DialogResult.OK)//准备接收文件;
{
using (FileStream filestream = File.OpenRead(odimport.FileName))
{
using (StreamReader streamreader = new StreamReader(filestream))
{
//创建连接字符串及建立通道;
string cOnnstr= ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection cOnn= new SqlConnection(connstr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "insert into Phonenumber(Phone,LocalID,LocalAddress,Phonestyle) values(@Phone,@LocalID,@LocalAddress,@Phonestyle)";
string line = null;
while ((line = streamreader.ReadLine()) != null)
{
//转化每一行数据为数组并用split分割字符串,获取个字段信息;
string[] strs = line.Split(' ');
string PhOne= strs[0];
int LocalID = Convert.ToInt32(strs[1]);
string LocalAddress = strs[2];
string PhOnestyle= strs[3];cmd.Parameters.Clear();
cmd.Parameters.Add(new SqlParameter("Phone", Phone));
cmd.Parameters.Add(new SqlParameter("LocalID", LocalID));
cmd.Parameters.Add(new SqlParameter("LocalAddress", LocalAddress));
cmd.Parameters.Add(new SqlParameter("Phonestyle", Phonestyle));
cmd.ExecuteNonQuery();
}
}}
}
}
MessageBox.Show("导入成功");
}
调试正常,可是当我打开数据表查看导入的数据时,靠,令人蛋疼的情况发生了:如下图归属地和卡品信息全变成不明字符
开始还以为是字段属性设置错误,检查一下字段属性弄错了,可是一检查没什么大问题:
然后上网搜了一大堆关于数据库中插入文字乱码问题的相关资料;不看还好,越看越晕,竟然还有位老兄说这是mssqlserver的数据保护,什么加密字段,靠想想微软也不会这么也不会这么bt,还有的说是数据库字符集的问题,我试了试得出结论:都是扯淡!
改数据库编码不成,最后突然想到改改被导入文本文档的编码最后把文本文档由ANSI转化为Unicode,最后导入;靠成功了
蛋疼啊、淡定!
经过一下午的折腾得出了一条结论:编程真是一件很让人蛋疼的事!忍住疼痛,你就变得淡定了!