ADO.NET学习笔记(五)
来源:互联网 发布:淘宝联盟部分退款返利 编辑:程序博客网 时间:2024/06/09 07:26
(3)数据导入导出数据库: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.Data.SqlClient;using System.IO;using System.Configuration;namespace 数据导入导出{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void odfImport_Click(object sender, EventArgs e) { //含中文的数据库字段如密码,昵称等要用nvalchar(50),n表示包含各种字符 //注意要点:导入的中文前要都加N,如:insert into T_user(Name,NickName) values('zhx',N'朱红星') if (odfImport.ShowDialog() != DialogResult.OK) { return; } using (FileStream fileStream = File.OpenRead(odfImport.FileName)) { using (StreamReader streamReader = new StreamReader(fileStream, System.Text.ASCIIEncoding.Default)) {//创建连接是非常耗时的,因此不要每次操作都创建连接 using (SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\Database1.mdf;Integrated Security = True; User Instance =True")) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { string line = null; while ((line = streamReader.ReadLine()) != null) { string[] strs = line.Split('|'); string name = strs[0]; int age = Convert.ToInt32(strs[1]); cmd.CommandText = "insert into T_Persons(Name,Age) values(@Name,@Age)"; cmd.Parameters.Clear();//参数不能重复添加,在while中一直就用的一个SqlCommand,即一个Cmd对象(容器)被两次赋值,导致参数过多,应该每次赋值后清空罐子 cmd.Parameters.Add(new SqlParameter("Name", name)); cmd.Parameters.Add(new SqlParameter("Age", age)); cmd.ExecuteNonQuery(); } } } } } MessageBox.Show("导入成功!"); /* if (odfImport.ShowDialog() == DialogResult.OK) { //如果第一次敲,没有提示就直接先敲出来,然后右键解析把包含的using 进来.......... using(FileStream fileStream = File.OpenRead(odfImport.FileName)) { using (StreamReader streamReader = new StreamReader(fileStream)) { string line = null; while( (line = streamReader.ReadLine()) != null) { string[] strs = line.Split('|'); string name= strs[0]; int age = Convert.ToInt32(strs[1]); using (SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\Database1.mdf;Integrated Security = True; User Instance =True"))//实现了IDisposable接口,用using括起,便于自动释放,在using()后调用了IDisposabl方法,它先判断有无conn.Close();如果没有,先进行关闭,在释放 { conn.Open(); using (SqlCommand cmd = conn.CreateCommand())//创建命令对象的实例并与先建的数据库建立连接,将连接using进来,使此方法直接不用释放,出了括号会自动释放 { cmd.CommandText = "insert into T_Persons(Name,Age) values(@Name,@Age)"; cmd.Parameters.Add(new SqlParameter("Name",name)); cmd.Parameters.Add(new SqlParameter("Age", age)); cmd.ExecuteNonQuery(); } } } } } } MessageBox.Show("导入成功!"); */ } private void ofdExport_Click(object sender, EventArgs e) { if (odfImport.ShowDialog() != DialogResult.OK) { return; } using (FileStream filestream = File.OpenWrite(odfImport.FileName))//文件流写入,关键一步:打开现有文件写入 { using (StreamWriter streamWrite = new StreamWriter(filestream,System.Text.Encoding.Default))//文件流写入 { using (SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS;AttachDBFilename = |DataDirectory|\Database1.mdf;Integrated Security = True; User Instance =True")) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = "select * from T_Persons"; using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { string Name = reader.GetString(reader.GetOrdinal("Name")); string Age = reader.GetString(reader.GetOrdinal("Age")); streamWrite.WriteLine("{0}|{1}", Name, Age); //格式化写入,类似Console.WriteLine(); } } } } } } MessageBox.Show("导出成功~"); } }}
0 0
- ADO.NET学习笔记(五)
- C#学习笔记之五(ADO.net)
- C#学习笔记之五(ADO.net)
- C#学习笔记(五)-ADO.NET访问数据库
- ADO.NET学习笔记
- ADO.NET学习笔记
- ADO.net学习笔记
- ado.net 学习笔记
- ADO.NET学习笔记
- ADO.NET 学习笔记
- ADO.NET学习笔记
- ADO.net学习笔记
- ado.net学习笔记
- ADO.NET学习笔记
- Ado.Net学习笔记
- ADO.NET学习笔记(一)
- ADO.NET学习笔记(二)
- ADO.NET学习笔记(三)
- 黑马程序员_多线程(一)
- 术语(更新持续中。。。)
- 《算法概论》第一次作业回顾与反思
- CentOS最常用命令及快捷键整理
- N的阶乘末尾有多少个0
- ADO.NET学习笔记(五)
- 一个内存泄露的极端例子
- const setfill setw
- win8系统在安装软件时安装framework3.5失败的解决办法
- Android使用Fragment嵌套Fragment的方式实现界面滑动
- TOJ:1746. How many sums
- 牛津词典软件下载
- ADO.NET学习笔记(六)
- 什么是 “动态规划” , 用两个经典问题举例。