C#对SQLServer表中信息的导入导出
数据库中有表Users,有以下字段:id,name,pass,phone,email
导入导出时遵循以下规律:
id|name|pass|phone|email
各字段值中间用"|"连接
使用StreamWriter进行数据导出
try { SaveFileDialog sfdExport = new SaveFileDialog(); if (sfdExport.ShowDialog() != DialogResult.OK) { return; } FileStream fileStream = File.OpenWrite(sfdExport.FileName); using(StreamWriter streamWriter = new StreamWriter(fileStream)) { using (SqlConnection con = new SqlConnection(@"连接字符串")) { con.Open(); using (SqlCommand cmd = con.CreateCommand()) { cmd.CommandText = "select * from [Users]"; using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { string strId = reader.GetString(reader.GetOrdinal("id")); string strName = reader.GetString(reader.GetOrdinal("name")); string strPass = reader.GetString(reader.GetOrdinal("pass")); string strPhone = reader.GetString(reader.GetOrdinal("phone")); string strEmail = reader.GetString(reader.GetOrdinal("email")); streamWriter.WriteLine(strId +"|"+strName+"|"+strPass +"|"+strPhone+"|"+strEmail); } } } } } MessageBox.Show("导出成功!"); } catch (Exception ex) { MessageBox.Show("导出失败!错误信息:"+ex.Message); }
使用StreamReader进行数据导入:
OpenFileDialog ofdImport = new OpenFileDialog(); if (ofdImport.ShowDialog() != DialogResult.OK) { return; } try { #region//导入数据操作 using (FileStream fileStream = File.OpenRead(ofdImport.FileName)) { using (StreamReader streamReader = new StreamReader(fileStream)) { using (SqlConnection con = new SqlConnection(@"连接字符串")) { con.Open(); using (SqlCommand cmd = con.CreateCommand()) { string line = null; while ((line = streamReader.ReadLine()) != null) { string[] arrTemp = line.Split('|'); string strID = arrTemp[0]; string strName = arrTemp[1]; string strPass = arrTemp[2]; string strPhone = arrTemp[3]; string strEmail = arrTemp[4]; cmd.CommandText = "insert into [Users](id,name,pass,phone,email) values(@id,@name,@pass,@phone,@email)"; cmd.Parameters.Clear(); cmd.Parameters.Add(new SqlParameter("id", strID)); cmd.Parameters.Add(new SqlParameter("name", strName)); cmd.Parameters.Add(new SqlParameter("pass", strPass)); cmd.Parameters.Add(new SqlParameter("phone", strPhone)); cmd.Parameters.Add(new SqlParameter("email", strEmail)); cmd.ExecuteNonQuery(); } } } } } MessageBox.Show("导入成功!"); #endregion } catch (Exception ex) { MessageBox.Show("导入失败!错误信息:"+ex.Message); }
代码还是很简单的,没有什么难点,不过不知道这种写法在大数据量时会有什么后果,执行效率怎么样暂时没有测试,如果有更加高效的写法,希望大家不吝赐教!