由于管理需要,公司决定上一套信息管理系统,将原来的用Excel所做的记录用管理系统来管理。通过努力,我终于作了一套类似《牛腩新闻发布系统》的客户信息管理系统。可原来的Excel中的数据该如何导入到新的系统中呢。通过两天的不断研习我终于搞定。
我所用的数据库是基于SQL Server 2005 Express版的,用SQL Server Management Studio Express来管理。数据库结构见图[img]http://dl.iteye.com/upload/attachment/156261/e71d8b1f-eba4-31b6-8a45-528d07eba88a.jpg[/img],
其中各个表的说明见图[img]http://dl.iteye.com/upload/attachment/156263/367fb587-e045-3f65-9df4-d5247658d43c.jpg[/img],公司现在所用的Excel数据见图[img]http://dl.iteye.com/upload/attachment/156265/bce2ae23-db55-3124-86a1-5562da8bebe9.jpg[/img]。
首先要做的是将Excel表导入到SQL Server 2005下。我先将Excel导入到Access中,再将Access数据库导入到SQL Server 2000中,然后将SQL Server 2000中的数据库做备份,最后再在SQL Server 2005 Express将数据库还原。最终得到SQL Server 2005中的数据库nbk,表名userinfo,表中的字段有:
id(编号) date(安装日期) name(客户姓名) address(地址) telphone(电话) model(机型) amount(数量) acmodel(配件) inname(安装工姓名)
剩下的工作就是要在VS中(我用的是VWD 2008 Express Edition)将库nbk中的数据导入到数据库yuajiasys中。
准备工作:
为了能够看到出错信息,首先打开web.config文件,将其中的容错处理语句,也就是<customErrors mode="On" defaultRedirect="~\error.htm"></customErrors>一行删除。
我原来所用的SQLHelper.cs(在DAL层)代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration;

namespace DAL{    public class SQLHelper    {        private SqlConnection conn = null;        private SqlCommand cmd = null;        private SqlDataReader sdr = null;

        public SQLHelper()        {            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;            conn = new SqlConnection(connStr);        }

        private SqlConnection GetConn()        {            if (conn.State == ConnectionState.Closed)            {                conn.Open();            }            return conn;        }

        public int ExecuteNonQuery(string sql, CommandType ct)        {            int res;            try            {                cmd = new SqlCommand(sql, GetConn());                cmd.CommandType = ct;                res = cmd.ExecuteNonQuery();            }            catch (Exception ex)            {                throw ex;            }            finally            {                if (conn.State == ConnectionState.Open)                {                    conn.Close();                }            }            return res;        }

        public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct)        {            int res;            using (cmd = new SqlCommand(cmdText, GetConn()))            {                cmd.CommandType = ct;                cmd.Parameters.AddRange(paras);                res = cmd.ExecuteNonQuery();            }            return res;        }

        public DataTable ExecuteQuery(string cmdText, CommandType ct)        {            cmd = new SqlCommand(cmdText, GetConn());            DataTable dt = new DataTable();            cmd.CommandType = ct;            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))            {                dt.Load(sdr);            }            return dt;        }

        public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)        {            cmd = new SqlCommand(cmdText, GetConn());            cmd.CommandType = ct;            DataTable dt = new DataTable();            cmd.Parameters.AddRange(paras);            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))            {                dt.Load(sdr);            }            return dt;        }    }}

此方法是用来操作数据库yuajiasys的。为了能够操作数据库nbk,我将SQLHelper复制了一份,命名为SQLHelper1,代码除了将SQLHelper改为SQLHelper1之外,只有一个地方要修改,那就是连接字符串,与nbk建立连接的字符串的写法:string connStr = @"server=PC2009080519VDZ\SQLEXPRESS;database=nbk;uid=sa;pwd=123456";改好之后要对DAL进行“重新生成”。
真正操作数据的过程:
新建一个网页copydata,前台什么也不用做,直接处理代码。具体过程如下:
一、从数据库nbk中查出所有的机型类别名称并加入到数据库yuajiasys的类别表category中。
直接在页面的Page_Load事件中写,具体代码:

string conncategory = "select distinct [model] from userinfo order by [model]";DataTable camodel = new SQLHelper1().ExecuteQuery(conncategory, CommandType.Text);string model;for (int i = 0; i < camodel.Rows.Count; i++){    model = camodel.Rows[i]["model"].ToString();    new CategroyManager().Insert(model); //调用往类别名称表加添加数据的方法}……//往类别名称表加添加数据的方法public bool Insert(string Model){     bool flag = false;     string sql = "insert into category(Model) values(@Model)";     SqlParameter[] paras = new SqlParameter[]{        new SqlParameter("@Model",Model)     };     int res=sqlhelper.ExecuteNonQuery(sql,paras,CommandType.Text);     if (res>0)     {        flag = true;     }     return flag;}

二、添加主表记录
将第一步中的代码注释掉,添加如下代码:

    string conninfo = "select * from userinfo order by date";                DataTable dtinfo = new SQLHelper1().ExecuteQuery(conninfo,CommandType.Text);     UserInfo usinfo = new UserInfo(); //UserInfo是客户信息实体类        for (int i = 0; i < dtinfo.Rows.Count; i++)  //根据界面的错误提示,不断修改执行循环的起始值和结束值,至到将数据全部复制完成。一次循环不应超过100         {             string caid = dtinfo.Rows[i]["model"].ToString();            switch (caid)            {                case "大众175升":                    caid="1";                    break;                case "大众180升":                    caid = "2";                    break;                case "大众210升":                    caid = "3";                    break;                case "大众240升":                    caid = "4";                    break;                case "大众300升":                    caid = "5";                    break;                case "冬傲180升":                    caid = "6";                    break;                case "冬傲210升":                    caid = "7";                    break;                case "冬傲240升":                    caid = "8";                    break;                case "冬傲300升":                    caid = "9";                    break;                case "富康200升":                    caid = "10";                    break;                case "富康240升":                    caid = "11";                    break;                case "富康300升":                    caid = "12";                    break;                case "富康420升":                    caid = "13";                    break;                case "金刚240升":                    caid = "14";                    break;                case "金刚300升":                    caid = "15";                    break;                case "金刚360升":                    caid = "16";                    break;                case "金刚420升":                    caid = "17";                    break;                               case "我爱我家150":                    caid = "18";                    break;                case "我爱我家155":                    caid = "19";                    break;                case "我爱我家175":                    caid = "20";                    break;                case "我爱我家180":                    caid = "21";                    break;                case "我爱我家210":                    caid = "22";                    break;                case "我爱我家240":                    caid = "23";                    break;                case "小神童300升":                    caid = "24";                    break;                case "阳光300升":                    caid = "25";                    break;                case "粤佳200升":                    caid = "26";                    break;                case "粤佳240升":                    caid = "27";                    break;                case "粤佳300升":                    caid = "28";                    break;                case "粤佳360升":                    caid = "29";                    break;                                default:                    caid = "12"; //设为富康300升所对应的ID号                    break;            }            usinfo.UserName = dtinfo.Rows[i]["name"].ToString().Trim();            usinfo.UserAddress = dtinfo.Rows[i]["address"].ToString().Trim();            usinfo.UserTelephone = dtinfo.Rows[i]["telphone"].ToString().Trim();            usinfo.CaId = caid;            usinfo.InstallationDate = dtinfo.Rows[i]["date"].ToString().Trim();            usinfo.Amount = dtinfo.Rows[i]["amount"].ToString().Trim();            usinfo.AccessoriesModel = dtinfo.Rows[i]["acmodel"].ToString().Trim();            usinfo.InstallationName = dtinfo.Rows[i]["inname"].ToString().Trim();            usinfo.Notes = "";            new UserInfoManager().Insert(usinfo);        }……

往客户信息表加添加数据的方法

         /// <summary>        ///  添加新记录         /// </summary>        /// <param name="user">客户信息实体类</param>        /// <returns></returns>        public bool Insert(UserInfo user)        {            bool flag = false;            string cmdText = "UserInfo_Insert";            SqlParameter[] paras = new SqlParameter[] {                 new SqlParameter("@userName",user.UserName),                new SqlParameter("@userAddress",user.UserAddress),                new SqlParameter("@userTelephone",user.UserTelephone),                new SqlParameter("@caId",user.CaId),                new SqlParameter("@installationDate",user.InstallationDate),                new SqlParameter("@amount",user.Amount),                new SqlParameter("@accessoriesModel",user.AccessoriesModel),                new SqlParameter("@installationName",user.InstallationName),                new SqlParameter("@notes",user.Notes)                            };            int res = sqlhelper.ExecuteNonQuery(cmdText,paras,CommandType.StoredProcedure);            if (res>0)            {                flag = true;            }            return flag;        }

实体类UserInfo.cs的代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Model{    public class UserInfo    {        private string id;        private string userName;        private string userAddress;        private string userTelephone;        private string caId;        private string installationDate;        private string amount;        private string accessoriesModel;        private string installationName;        private string notes;

        public string Id        {            get { return id; }            set { id = value; }        }        public string UserName        {            get { return userName; }            set { userName = value; }        }        public string UserAddress        {            get { return userAddress; }            set { userAddress = value; }        }        public string UserTelephone        {            get { return userTelephone; }            set { userTelephone = value; }        }        public string CaId        {            get { return caId; }            set { caId = value; }        }        public string InstallationDate        {            get { return installationDate; }            set { installationDate = value; }        }        public string Amount        {            get { return amount; }            set { amount = value; }        }        public string AccessoriesModel        {            get { return accessoriesModel; }            set { accessoriesModel = value; }        }        public string InstallationName        {            get { return installationName; }            set { installationName = value; }        }        public string Notes        {            get { return notes; }            set { notes = value; }        }        public UserInfo() { }        public UserInfo(string id,string userName,string userAddress,string userTelephone,string caId,string installationDate,string amount,string accessoriesModel,string installationName,string notes)         {            this.id = id;            this.userName = userName;            this.userAddress = userAddress;            this.userTelephone = userTelephone;            this.caId = caId;            this.installationDate = installationDate;            this.amount = amount;            this.accessoriesModel = accessoriesModel;            this.installationName = installationName;            this.notes = notes;        }        public UserInfo(string userName, string userAddress, string userTelephone, string caId,string installationDate, string amount, string accessoriesModel, string installationName, string notes)        {            this.userName = userName;            this.userAddress = userAddress;            this.userTelephone = userTelephone;            this.caId = caId;            this.installationDate = installationDate;            this.amount = amount;            this.accessoriesModel = accessoriesModel;            this.installationName = installationName;            this.notes = notes;        }    }}

说明:由于有两个与数据库的链接存在,在运行过程中会出错,好像是链接池的问题,我不太懂。我的解决办法是不断的修改循环的起始值和结束值,直止将数据全部写完。关于这点,哪位网友有好的解决办法,希望能与之交流。另外,代码中用到一些自己写的操作数据库的方法,如有不明之处,建议看看视频《牛腩新闻发布系统》。
写的比较乱,主要是讲一种思路,有不懂的地方,欢迎与本人联系交流。QQ:747386679。

实例讲解用.NET技术将Excel表格中的数据导入到特定的SQL Server数据库中相关推荐

  1. 如何将excel表格内的数据导入至mysql数据库

    如何将excel表格内的数据导入至mysql数据库 当前mysql版本:5.5 创建Excel表格输入数据 注:第一行为数据表的列名(要保持一致) 将表格另存为.cvs格式的文件 再用editPlus ...

  2. 导入excel表格到数据库、导入excel表格到数据库代码、根据excel表格路径将数据导入到数据库、验证要导入的excel表格数据、根据路径获取MultipartFile、FileItem文件

    导入excel表格到数据库.根据路径导入excel表格到数据库代码.根据excel表格路径将数据导入到数据库.验证要导入的excel表格数据.根据路径获取MultipartFile.FileItem文 ...

  3. Asp实现Excel数据导入到 Access、Sql Server中示例代码

    将Excel中的数据导入到Access中,前提是在Access中的表已经建好. dim conn dim conn2 set conn=CreateObject("ADODB.Connect ...

  4. 不用代码快速将Excel的数据导入SQL Server数据库中

    主要通过SQL Server的导入功能 直接写流程 1.首先获取一份符合格式的Excel表(能导入数据库Excel的格式是97-2003) 字段名就是你要导入数据库表的字段名(导入后这个表只作为临时表 ...

  5. SQL Server 数据库中数据库表导出为Excel表格

    数据库操作人员经常会使用sql server 中数据导出至excel表中,其过程其实比较简单,只是有部分细节需要注意,有出现个别情况可以进行规避 处理 打开数据库,选择需要导出的数据库名,右键选择&q ...

  6. excel首行空不能导入access_终于解决SQL Server 2008 64位系统无法导入Access/Excel的问题 2012/08/01...

    最近更换了新服务器,操作系统Windows Server 2008 X64,数据库SQL Server 2008 X64,Office 2007(好像只有32位),在存储过程执行OpenDatasou ...

  7. MDF文件在SQL Server数据库中恢复技术

    日期:2006-07-19  点击:23  作者:  来源:网页教学网 先把要恢复的文件置于MS SQL里的DATA文件里,进入MS SQL主数据库服务器后 1.我们使用默认方式建立一个供恢复使用的数 ...

  8. Excel将多个工作簿加载到SQL Server中

    介绍 (Introduction) 大约一年前,我正在从事一个项目,该项目围绕每日数据负载(来自企业中的各种资产管理组)到主SQL Server数据存储库中进行. 每个小组在自己的Excel工作簿中完 ...

  9. C#将Excel数据导入到SQL server数据库

    将Excel数据导入到数据库,用winfrom系统,如图: 该系统可以选择导入的Excel文件,设置要导入的数据库的基本设置. 代码: winfrom窗体: public partial class ...

最新文章

  1. QUIC助力Snapchat提升用户体验
  2. 数据库连接池的选择及其开发配置
  3. packetbeat oracle,packetbeat 无法启动
  4. IO模式设置,阻塞与非阻塞的比较,recv参数对性能的影响—O_NONBLOCK(open使用)、IPC_NOWAIT(msgrcv)、MSG_DONTWAIT
  5. SwarmKit知多少——来自源码世界的深入解读
  6. 项目开发中如何提升团队的战力?
  7. go语言中输入的方式,获取用户的输入信息
  8. Keepalived高可用(原理、安装、启动、单实例配置、双实例双主配置实战篇)
  9. 【记录】锐捷Windows认证客户端常见问题及处理方法
  10. matlab时频分析
  11. 混沌数学之Lorenz(洛伦茨)吸引子
  12. java freemark导出word 实现word分页
  13. 【原创smarty仿淘宝商品图片轮播+放大镜效果】
  14. PDF怎么在线免费转换成WORD,亲测可用
  15. 蓝桥杯 ALGO-1001 跳马
  16. 浅谈一个新人的大数据之路-HiveQLSpark-SQL中谓词下推
  17. 计算机组成原理:循环冗余校验码CRC具备“一位纠错”功能的思考与探索
  18. AprilTag二维码检测和定位
  19. 6、指正的定义、内存、使用、指针常量、常量指针
  20. 天啦撸~ChatGPT通过国际软件测试工程师(ISTQB)认证了~

热门文章

  1. 华为手机地震预警怎样设置
  2. java中输入语句是怎么写的
  3. [计算机网络] 实验3 UDP协议分析
  4. certutil工具的用法
  5. JAVA学习-java基础讲义01
  6. chatgpt赋能python:Python如何发送手机短信:实现方法解析和应用场景介绍
  7. 常见函数的四种类型有哪些
  8. Text-to-SQL模型----IRNet
  9. 邵广禄:中国联通“产业互联网”技术方案
  10. android 丢帧率测试,Android流畅度测试