数据导入:从文本文件导入用户信息。数据导出:将用户信息导出到文本文件。 带参数的写法 适合登陆使用
题目要求
数据导入:从文本文件导入用户信息。数据导出:将用户信息导出到文本文件。
代码如下: 带参数的写法 适合登陆使用
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Data.SqlClient; namespace _91 { public partial class Form1 : Form { string constr = @"Data Source=PC0821NPY\LIU;Initial Catalog=lx;Integrated Security=True"; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { openFileDialog1.FileName = ""; openFileDialog1.Filter = "文本文件|*.txt|cs文件|*.cs|所有文件|*.*"; //显示对话框 // openFileDialog1.ShowDialog(); DialogResult dr = openFileDialog1.ShowDialog(); if (dr == DialogResult.OK) { string[] lines = File.ReadAllLines(openFileDialog1.FileName, Encoding.Default); using (SqlConnection conn = new SqlConnection(constr)) { using (SqlCommand cmd = new SqlCommand()) { conn.Open(); int i = 0; foreach (string line in lines) { string[] arr = line.Split(new char[] { ',', ',' }); if (arr.Length == 2) { string sql = "insert into [uuser] (uUserName,uPwd) values (@name,@pwd)"; //清空之前的数据 cmd.Parameters.Clear(); //给sql语句的参数赋值 cmd.Parameters.AddWithValue("@name", "arr[0]"); cmd.Parameters.AddWithValue("@pwd", "arr[1]"); cmd.CommandText = sql; i++; cmd.ExecuteNonQuery(); } MessageBox.Show("添加了" + i); } } } } } private void button2_Click(object sender, EventArgs e) { } } }
第二种写法 ,推荐用比较简单
private void button2_Click(object sender, EventArgs e) { //1/选择文本文件 //2/读取文本文件的每一行(每一行就是一个用户) //3/把每一行的用户的用户名和密码读出来,拼成一个sql语句 //4/执行拼好的sql语句 string connStr = @"Data Source=.\sqlexpress;Initial Catalog=MySchool;Uid=sa;Pwd=sa"; openFileDialog1.FileName = ""; openFileDialog1.Filter = "文本文件|*.txt"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { //读取文本文件中所有行(每一行就是一个人) string[] lines = File.ReadAllLines(openFileDialog1.FileName, Encoding.Default); using (SqlConnection conn = new SqlConnection(connStr)) { using (SqlCommand cmd = new SqlCommand()) { //设置cmd的连接 cmd.Connection = conn; //sb连接多个sql语句 StringBuilder sb = new StringBuilder(); //遍历每一个人,拼成sql语句 foreach (var line in lines) { //解析人名和密码 string[] arr = line.Split(',',','); //如果是人名和密码的话(保证数组里有两项) if (arr.Length == 2) { //拼sql语句 sb.Append(string.Format("insert into [user] (uUserName,uPwd) values('{0}','{1}');",arr[0],arr[1])); } } //打开数据库 conn.Open(); //设置cmd要执行的sql语句(多条sql语句) cmd.CommandText = sb.ToString(); //执行sql语句,返回受影响的行数 int n = cmd.ExecuteNonQuery(); MessageBox.Show(n.ToString()); } } } } private void button3_Click(object sender, EventArgs e) { //1 输入要保存的文件名 //2 查询所有用户 //3 拼接字符串 //4 保存到文件 string connStr = @"Data Source=.\sqlexpress;Initial Catalog=MySchool;Uid=sa;Pwd=sa"; saveFileDialog1.Filter = "文本文件|*.txt"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { //获取要保存的文件路径 string path = saveFileDialog1.FileName; using (SqlConnection conn = new SqlConnection(connStr)) { string sql = "select * from [user]"; using (SqlCommand cmd = new SqlCommand(sql,conn)) { conn.Open(); //读取所有用户 using (SqlDataReader dr = cmd.ExecuteReader()) { //定义集合保存所有从数据库中读出来的用户 List<string> users = new List<string>(); while (dr.Read()) { //读取用户名 string name = dr["uUserName"].ToString(); //读取用户密码 string pwd = dr["uPwd"].ToString(); //把用户名和密码拼起来,添加到集合中 users.Add(name + "," + pwd); } //把集合中的元素保存到文件 //users.ToArray()把集合转换成数组 File.WriteAllLines(path, users.ToArray()); MessageBox.Show("保存了" + users.Count); } } } } } } }