由于项目需要,要往数据库中导入一些历史数据,而这些历史数据都是线下人工记录的,所以有很多不规范的地方,比如:同一个公司的名称在不同的记录中可能相差那么几个字,而且每条数据不是每个字段都是完整的,等等诸如此类的不规范问题。如何规范化,并且将这些若干excel表格的数据切分并且导入到数据库中的若干表中,并且这些表之间有着一对一或者一对多等关系,识别这些关系仅仅靠SQL是不行的,存储过程我也不了解,不知道能否满足需求。但是用c#加ADO.NET操作SQLServer还是很方便的,所以就决定使用C#。

下面列出一些比较常用的而且很方便的函数,还有一些常用的用c#操作数据库写法。

对于Excel表格,我直接将里面的数据copy到txt里面,这个过程中Excel表格一行中的每两个格子之间会自动添加制表符,然后利用c#的File类的静态方法一次性读取所有行:

string[] applycontract_origin = File.ReadAllLines("D:/1.txt");

这个用来读取文本再方便不过了,只需要一句话即可。

c#操作SQLServer的常用方法:

private static string connStr = "Server=127.0.0.1;database=test;UID=sa;PWD=123456";

private static SqlConnection conn = new SqlConnection(connStr);

首先当然要打开数据库连接:

conn.Open();

这是连接字符串和创建连接的代码,下面是选取数据的代码:

string selectLeaderCompany = @"select * from company_info";
SqlDataAdapter dataAdapter = new SqlDataAdapter(selectLeaderCompany, conn);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
return ds;

下面是插入数据的写法:

      string insertsql = "insert into tb_company_info (COMPANY_NM,REG_DATE) values('@name,getdate())" + ";select SCOPE_IDENTITY() as 'Identity'";
      SqlCommand insertCmd = new SqlCommand(insertsql, conn);
      SqlParameter p1 = new SqlParameter("@name", SqlDbType.VarChar,200);
      string name = "ssss";
      p1.Value = name;
      insertCmd.Parameters.Add(p1);
      string newid = insertCmd.

ExecuteScalar().ToString();

这里需要注意的是如果要获取插入数据的自增长ID,那么就要加入select SCOPE_IDENTITY(),获取自增长ID的方法有三种,要根据自己的需要选择合适的方法,SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY都可以获取,具体区别在这里我就不细说了,网上相关资料很多。

如果不需要返回自增长ID,就如下执行:

insertCmd.ExecuteNonQuery();

删除和更新操作都和插入数据的写法一样,只需要更改sql语句即可。

对于选取数据的操作获取的DataSet,可以在程序里动态添加数据:

构造新的Row的时候如上述方法构造,不能使用构造函数,我觉得原因在于构造函数没法定义新行的列结构,而通过已经存在的Table构造新行就可以使用它的结构来初始化新行。
程序的最后别忘了关闭连接:

conn.Close();

如果想插入null数据,那么请使用:

p[7].Value = DBNull.Value;//p是sqlparameter类型的数组

对于:

private static SqlParameter amount = new SqlParameter("@amount", SqlDbType.Decimal);

private static SqlParameter amount = new SqlParameter("@amount", SqlDbType.Decimal);

上面的Decimal类型,可以如下设置精度:

amount.Precision = 18;
amount.Scale = 2;

这样一来,利用ADO.NET对数据库进行基本操作就总结完了。

 

[asp.net入门]利用ADO.NET处理数据的简单之处的更多相关文章

  1. 一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子

    备注:这是我辅导的一个项目开发组的一个例子,用文章的方式分享出来,给更多的朋友参考.其实我们这几年的项目中,都不怎么使用服务器控件的形式了,而是更多的采用MVC这种开发模式.但是,如果项目的历史背景是 ...

  2. 利用ADO打开Access数据(64位系统)

    64位的access一定要用64的程序才能正确打开,仍然用"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Test.accdb;Persist ...

  3. 【Asp.net入门3-05】处理JSON数据

  4. salesforce 零基础开发入门学习(八)数据分页简单制作

    本篇介绍通过使用VF自带标签和Apex实现简单的数据翻页功能. 代码上来之前首先简单介绍一下本篇用到的主要知识: 1.ApexPages命名空间 此命名空间下的类用于VF的控制. 主要的类包括但不限于 ...

  5. nodejs利用superagent爬取数据的简单例子

    爬取世界银行统计数据 安装:npm install superagent /** * Created by zh on 16-9-7. */ var request = require('supera ...

  6. ASP.NET MVC 入门8、ModelState与数据验证

    原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/08/1305962.html ViewData有一个ModelState的属性,这是一个类型 ...

  7. 【转】asp.net中利用session对象传递、共享数据[session用法]

    来自:http://blog.unvs.cn/archives/session-transfer-method.html 下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值 ...

  8. ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK

    看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, 加入一个表10W数据,另一个表也是10万数据,当你用linq建立一个连接查询 ...

  9. [转]ASP.NET MVC 入门8、ModelState与数据验证

    ViewData有一个ModelState的属性,这是一个类型为ModelStateDictionary的ModelState类型的字典集合.在进行数据验证的时候这个属性是比较有用的.在使用Html. ...

随机推荐

  1. GITC简单感触

    GITC短暂的2天,去参加主要是想参与其中,了解其他家的技术,技术使用, 那些大牛,及大牛公司,大牛团队的一些事. 早上的主会场主要是介绍和宣传.半小时后就出去逛逛外面的分会场: 参与听了下 智能硬件 ...

  2. 【漏洞预警】Apache ActiveMQ Fileserver远程代码执行漏洞(CVE-2016-3088)

    漏洞编码:CVE-2016-3088 实验环境:Linux Apache ActiveMQ版本号:Apache ActiveMQ 5.7.0 ----------------------------- ...

  3. python调用matlab

    官网链接: https://ww2.mathworks.cn/help/matlab/matlab_external/call-user-script-and-function-from-python ...

  4. 聊聊用CSS3来玩立方体

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 虽然现在很多浏览器都还不支持css3的3D转换,不过估计也已经有很多人都有玩css3的3D了......所以我这篇也就相当于水一下了,哈哈 ...

  5. StringUtils类中 isEmpty() 与 isBlank()的区别

    org.apache.commons.lang.StringUtils类提供了String的常用操作,最为常用的判空有如下两种isEmpty(String str)和isBlank(String st ...

  6. EJB (Enterprise Java Bean) 理解

    做开发有段时间了,一直似懂非懂的. http://blog.csdn.net/jojo52013145/article/details/5783677

  7. 移动平台的WebApp之Meta标签

    对于桌面平台web布局中大家对meta标签再熟悉不过了,它永远位于 head 元素内部,对做SEO的朋友一定对meta有种特殊的感情吧,今天我们就来说说移动平台的meta标签,在移动平台meta标签究 ...

  8. Syslink Control in MFC 9.0(转)

    Visual Studio 2008 (formely code-named ‘Orcas’) has several important updates for VC++ and MFC. Amon ...

  9. jquery googleapis

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type=&quo ...

  10. Spring-Bean配置-使用外部属性文件(转)

    Spring-Bean配置-使用外部属性文件 所以可以通过@value注解获取配置文件的key-value,生成一个配置文件bean.用以在代码中直接使用bean的方式. •在配置文件里配置Bean时 ...