黑马程序员技术交流社区
标题:
数据导入问题?
[打印本页]
作者:
黄威
时间:
2011-11-11 21:43
标题:
数据导入问题?
用c#练习一个读取文件,导入数据库时,共两个字段,一个是UserName nvarchar(50)
一个是Age int;当是英文名字时,读取正常,是汉字时,就是乱码,郁闷呀。。
代码如下:
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
if (openFileDialog1.ShowDialog() != DialogResult.OK)
{
return;
}
using (FileStream filestream = File.OpenRead(openFileDialog1.FileName))
{
using (StreamReader streamreader = new StreamReader(filestream))
{
using (SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"))
{
con.Open();
using (SqlCommand cmd = con.CreateCommand())
{
cmd.CommandText = "insert into T_usrs(name,age) values(@name,@age)";
string line = null;
while ((line = streamreader.ReadLine()) != null)
{
string[] lines = line.Split('|');
string name1 = lines[0];
int age = Convert.ToInt32(lines[1]);
cmd.Parameters.Clear();
cmd.Parameters.Add(new SqlParameter("name", name1));
cmd.Parameters.Add(new SqlParameter("age", age));
cmd.ExecuteNonQuery();
}
}
MessageBox.Show("导入成功!");
}
}
}
}
作者:
李荣壮
时间:
2011-11-11 22:18
我只知道 操作非ASCII组成字符串的时候, 前面最好加N , 避免出现乱码
作者:
黄威
时间:
2011-11-11 22:46
我已经解决问题了,把using (StreamReader streamreader = new StreamReader(filestream))替换为
using (StreamReader sr = new StreamReader(filestream, System.Text.Encoding.GetEncoding("GB2312")))
作者:
王绚文
时间:
2011-11-13 13:41
我一般用的是System.Text.Encoding.GetEncoding.Default 用系统默认的编码
作者:
朱勋
时间:
2011-11-16 10:09
StreamReader streamreader = new StreamReader(filestream,System.Text.Encoding.GetEncoding.Default ))用系统自身默认的就可以了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2