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);
            }

代码还是很简单的,没有什么难点,不过不知道这种写法在大数据量时会有什么后果,执行效率怎么样暂时没有测试,如果有更加高效的写法,希望大家不吝赐教!

posted @ 2011-12-14 15:22  zyswtwang  阅读(1922)  评论(0编辑  收藏  举报