C#数据库WPF txt导入导出的实例

来源:互联网 发布:戴尔win10激活windows 编辑:程序博客网 时间:2024/05/22 03:37

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.SqlClient;
using Microsoft.Win32;
using System.IO;
namespace 数据导入
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            string dataDir = AppDomain.CurrentDomain.BaseDirectory;
            if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
                AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
            }
        }
        // 数据导入按钮的点击事件
        private void button1_Click(object sender, RoutedEventArgs e)
        {
         /* 数据库链接是很耗时的,尽量减少链接的次数,所以本方法不是最优的
string connstring = @"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;
Integrated Security=True;user Instance=True";
            using(SqlConnection conn=new SqlConnection(connstring))
            {
                conn.Open();
                OpenFileDialog ofd = new OpenFileDialog();
                if (ofd.ShowDialog() == true)
                {
                    using (FileStream filestream = File.OpenRead(ofd.FileName))
                    {
                        using (StreamReader streamreader = new StreamReader(filestream))
                        {
                            string line = null;
                            while ((line = streamreader.ReadLine()) != null)
                            {
                                string[] strs = line.Split('|');
                                string name = strs[0];
                                string age = strs[1];
                                using (SqlCommand cmd = conn.CreateCommand())
                                {
                                    cmd.CommandText = "insert into T_Student(Name,Age) values(@UN,@AGE)";
                                    cmd.Parameters.Add(new SqlParameter("UN", name));
                                    cmd.Parameters.Add(new SqlParameter("AGE",age));
                                    cmd.ExecuteNonQuery();
                                }
                            }
                        }
                    }
                }
            }*/
            string connstring = @"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;
Integrated Security=True;user Instance=True";
            using (SqlConnection conn = new SqlConnection(connstring))
            {
                conn.Open();
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Filter = "文本文件|*.txt";
                if (ofd.ShowDialog() == false)
                { return; }
                using (FileStream filestream = File.OpenRead(ofd.FileName))
                {
                    using (StreamReader streamreader = new StreamReader(filestream,Encoding.GetEncoding("GB2312")))
                    //必需设置字符编码System.Text.Encoding.GetEncoding("GB2312"),不然string name = arr[0]中的name就是乱码
                    {
                        using (SqlCommand cmd = conn.CreateCommand())
                        {
                            cmd.CommandText = "insert into T_Student(Name,Age) values(@name,@age)";
                            string[] strs = null;
                            string line=null;
                            while ((line = streamreader.ReadLine()) != null)
                            {
                                strs = line.Split('|');
                                string name = strs[0];
                                string age = strs[1];
                                cmd.Parameters.Clear();   //此语句的含义是清除parameters参数,因为一直使用的是同一个cmd对象,所以前面的  参数会累加。因此,应该调用清除;
                                cmd.Parameters.Add(new SqlParameter("name",name));
                                cmd.Parameters.Add(new SqlParameter("age",age));
                                cmd.ExecuteNonQuery();
                            }
                        }
                    }
                }
            }
            MessageBox.Show("数据插入成功");
        }
       
        //数据导出按钮的点击事件 
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            string connstring = @"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;
Integrated Security=True;user Instance=True";
            using (SqlConnection conn = new SqlConnection(connstring))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from T_Student";
                    using (FileStream filestream = File.OpenWrite(@"C:\Users\DELL\Desktop\test.txt"))
                    {
                        using (StreamWriter streamwtiter = new StreamWriter(filestream, Encoding.GetEncoding("GB2312")))
                        {
                            SqlDataReader reader = cmd.ExecuteReader();
                            while (reader.Read())
                            {
                                string name = reader.GetString(reader.GetOrdinal("Name"));
                                int age = reader.GetInt32(reader.GetOrdinal("Age"));
                                string str = name + "|" + age.ToString();
                                streamwtiter.WriteLine(str);
                                streamwtiter.Flush();
                            }
                        }
                    }
                }
            }
            MessageBox.Show("信息导出成功");
        }
    }
}
0 0
原创粉丝点击