利用ADO.NET处理数据的简单之处

利用ADO.NET处理数据的简单之处,第1张

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

由于项目需要,要往数据库中导入一些历史数据,而这些历史数据都是线下人工记录的,所以有很多不规范的地方,比如:同一个公司的名称在不同的记录中可能相差那么几个字,而且每条数据不是每个字段都是完整的,等等诸如此类的不规范问题。如何规范化,并且将这些若干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,可以在程序里动态添加数据:

string selectleaderCompany = @"select * from tb_company_info";sqlDataAdapter dataAdapter = new sqlDataAdapter(selectleaderCompany,conn);DataSet ds = new DataSet();dataAdapter.Fill(ds);DaTarow newRow = ds.tables[0].NewRow();newRow["columname"] = "newValue";...ds.tables[0].Rows.Add(newRow)

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

conn.Close();

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

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

附带sqlDbType和sqlServer类型之间的对应关系:

http://www.cnblogs.com/Relict/archive/2011/12/19/2293460.html

对于:

private static sqlParameter amount = new sqlParameter("@amount",sqlDbType.Decimal);

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

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

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

@H_419_131@ 总结

以上是内存溢出为你收集整理的利用ADO.NET处理数据的简单之处全部内容,希望文章能够帮你解决利用ADO.NET处理数据的简单之处所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1172391.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存