ADO.Net_案例1(数据导入导出)
来源:互联网 发布:外国人在淘宝网可以吗 编辑:程序博客网 时间:2024/05/17 20:35
数据导入导出:
导入:从文本文件中读取数据,插入到数据库表中;
导出:从数据库中读取数据,保存到文本文件中。
(易错点:Parameter的重复添加)
应用程序的主入口点:
static void Main()
{
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);
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
导入到数据库表中(方法一:比较耗时):
private void btnImport_Click(object sender, EventArgs e)
{
OpenFileDialog dialog =new OpenFileDialog();
if (dialog.ShowDialog() ==DialogResult.OK)
{
string filePath = dialog.FileName;
using (FileStream file =File.OpenRead(filePath))
{
using (StreamReader sr =new StreamReader(file,Encoding.Default))
{
string line =null;
while ((line = sr.ReadLine()) !=null)
{
string[] strs = line.Split('|');
string name = strs[0];
int age =Convert.ToInt32(strs[1]);
int score =Convert.ToInt32(strs[2]);
using (SqlConnection conn =new SqlConnection(
@"Data Source =.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\MyDB1.mdf; Integrated Security=True;User Instance=True"))
//创建连接是非常耗时的,因此不要每次操作都去创建连接
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "insert into T_Student(FName,FAge,FScore) values(@FName,@FAge,@FScore)";
cmd.Parameters.Add("FName", name);
cmd.Parameters.Add("FAge", age);
cmd.Parameters.Add("FScore", score);
cmd.ExecuteNonQuery();
}
}
}
}
MessageBox.Show("导入成功!");
}
}
}
上面程序比较耗时,因为在while中,每处理一条数据就要创建一次连接。
优化过后:
private void btnImport_Click(object sender, EventArgs e)
{
OpenFileDialog openDialog=new OpenFileDialog();
if (openDialog.ShowDialog() !=DialogResult.OK)
{
return;
}
string filePath = openDialog.FileName;
using (FileStream file =File.OpenRead(filePath))
{
using (StreamReader sr =new StreamReader(file,Encoding.Default))
{
using (SqlConnection conn =new SqlConnection(
@"Data Source =.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\MyDB1.mdf; Integrated Security=True;User Instance=True"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
//采用参数化查询
cmd.CommandText = "insert into T_Student(FName,FAge,FScore) values(@FName,@FAge,@FScore)";
string line =null;
while ((line = sr.ReadLine()) !=null)
{
string[] strs=line.Split('|');
string name = strs[0];
int age =Convert.ToInt32(strs[1]);
int score=Convert.ToInt32(strs[2]);
//每一次都要清空下参数集合
cmd.Parameters.Clear(); //参数不能重复,在while中一直都是用的同一个SqlCommand
cmd.Parameters.Add("FName", name);
cmd.Parameters.Add("FAge", age);
cmd.Parameters.Add("FScore", score);
cmd.ExecuteNonQuery();
}
}
}
}
}
MessageBox.Show("导入成功");
}
导出到文本文件中
private void btnExport_Click(object sender, EventArgs e)
{
SaveFileDialog saveDialog = new SaveFileDialog();
if (saveDialog.ShowDialog() != DialogResult.OK)
{
return;
}
string filePath = saveDialog.FileName;
using (FileStream file = File.OpenWrite(filePath))
{
using (StreamWriter sw = new StreamWriter(file))
{
using (SqlConnection conn = new SqlConnection(
@"Data Source =.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\MyDB1.mdf; Integrated Security=True;User Instance=True"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from T_Student";
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
string name = reader.GetString(reader.GetOrdinal("FName"));
int age = reader.GetInt32(reader.GetOrdinal("FAge"));
int score = reader.GetInt32(reader.GetOrdinal("FScore"));
sw.WriteLine(string.Format("{0}|{1}|{2}",name,age,score));//写到流中
}
}
}
}
}
}
MessageBox.Show("导出成功!");
}
- ADO.Net_案例1(数据导入导出)
- ado.net_导入数据
- ado.net_数据的导出
- ado.net_导入数据优化
- ADO--如何导入导出数据
- hive导入导出数据案例
- 黑马程序员--ADO.NET数据导入导出
- Oracle数据泵导入导出案例
- Oracle数据泵导入导出案例
- sqoop数据导入导出应用案例
- ADO.Net_案例2(手机号码归属地查询)
- ado.net实现简单的数据导入和导出
- ADO.NET控制图片数据,导入导出数据库
- ADO.NET_介绍
- ADO.NET_事务处理
- ADO.NET_事务处理
- ADO.NET_事务
- ADO.net_连接字符串
- Web存储小结
- Java位运算学习
- 无法识别maven web工程的解决方法
- netstat 源码(占个地方)
- PHP学习笔记2--IIS5.1下PHP的配置
- ADO.Net_案例1(数据导入导出)
- 黑马程序员--java中的泛型。
- iphone入门教程
- 经验
- 关于setsocketopt函数 .
- Java解压zip
- 提升进程权限代码 .
- VC 键盘 按键 虚拟码 表
- 在学习中进步