这是我写的导入导出代码
if (ofdOpen.ShowDialog() != DialogResult.OK)
{
return;
}
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cnd = conn.CreateCommand())
{
FileStream fileStream = File.OpenRead(ofdOpen.FileName);
StreamReader reader = new StreamReader(fileStream);
string lines = null;
while ((lines = reader.ReadLine()) != null)
{
cnd.Parameters.Clear();
string[] str = lines.Split('|');
string name = str[0];
int age = Convert.ToInt32(str[1]);
cnd.CommandText = "insert into T_Persons (FName ,FAge) values (@name,@age)";
cnd.Parameters.Add(new SqlParameter("name", name));
cnd.Parameters.Add(new SqlParameter("age",age));
cnd.ExecuteNonQuery();
}
}
}
MessageBox.Show("导入成功!");
这是视频里的代码
if (ofdImport.ShowDialog() != DialogResult.OK)
//ofdImport是对话框的名字 ShowDialog 运行对话框 DialogResult 指定标示符以指示对话框的返回值 OK 对话框的返回值
{
return;
}
using (FileStream fileStream = File.OpenRead(ofdImport.FileName))
//FileStream 支持同步读写操作 也支持异步读写操作 fileStream 局部变量File提供用于创建 复制 删除 移动和打开文件的静态方法
//OpenRead 打开现有文件进行读取 ofdImport.FileName 获取或设置一个包含在文件对话框中选定的文件名的字符串
{
using (StreamReader streamReader = new StreamReader(fileStream))//StreamReader 读取字符串 streamReader 局部变量
{
using (SqlConnection conn = new SqlConnection(@"Data Source=.\MSSQLSERVER2012;
AttachDbFilename=E:\代码\我的第一个dmf\数据导入导出\Database1.mdf;
Integrated Security=True;User Instance=True"))
//创建连接非常的耗时的,因此不要每次操作都创建连接
{
conn.Open();
using (SqlCommand cnd = conn.CreateCommand())
{
cnd.CommandText = "Insert into T_Persons (Name,Age) values (@Name,@Age )";
string line = null;
while ((line = streamReader.ReadLine()) != null)
{
string[] strs = line.Split('|');
string name = strs[0];
int age = Convert.ToInt32(strs[1]);
cnd.Parameters.Clear();//!!!!!! 参数不能重复添加,在while中一直用的就是一个SqlCommand对象
cnd.Parameters.Add(new SqlParameter("@Name", name));
cnd.Parameters.Add(new SqlParameter("@Age", age));
cnd.ExecuteNonQuery();//别忘记了 !! 且经常会出错
}
}
}
}
}
MessageBox.Show("导入成功");
求两者的区别
|