A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄威 黑马帝   /  2011-11-11 21:43  /  1944 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用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("导入成功!");
                    }
                }
            }
        }

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

4 个回复

倒序浏览
我只知道  操作非ASCII组成字符串的时候,  前面最好加N , 避免出现乱码

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
黄威 黑马帝 2011-11-11 22:46:02
藤椅
我已经解决问题了,把using (StreamReader streamreader = new StreamReader(filestream))替换为
using (StreamReader sr = new StreamReader(filestream, System.Text.Encoding.GetEncoding("GB2312")))

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
我一般用的是System.Text.Encoding.GetEncoding.Default 用系统默认的编码

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
朱勋 黑马帝 2011-11-16 10:09:37
报纸
StreamReader streamreader = new StreamReader(filestream,System.Text.Encoding.GetEncoding.Default ))用系统自身默认的就可以了

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马