概括ADO.NET数据库连接的所有形式(基础)

概括ADO.NET数据库连接的所有形式(基础)

 可能大家进来会喷笔者,这么基础的知识还放在首页。那么笔者就要问问大家了,你可能熟悉其中部分数据库读取的形式,但是熟悉全部的估计很少,或者你完全忘记了,因为这些形式被封装到你自己框架的底层,自己搞过一两次就在也没有动手写过了。但是笔者觉得这部分知识是应该牢固掌握的,这个是基础。好如果是已经掌握的大侠,看看笔者写的内容,提出点建议或者补充笔者的内容。

  好了废话不多说看

  第一种

  通过直接在cs文件中编写查询语句调用 dbcom.ExecuteNonQuery();执行插入数据

复制代码
1 //连接字符串
2 string ConnectionString = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ConnectionString;
3 string ProviderName = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ProviderName;
4 DbProviderFactory dbproviderfactory = DbProviderFactories.GetFactory(ProviderName);
5 DbConnection dbcon = dbproviderfactory.CreateConnection();
6 dbcon.ConnectionString = ConnectionString;
7 DbCommand dbcom = dbproviderfactory.CreateCommand();
8 dbcom.Connection = dbcon;
9 dbcom.CommandText ="Insert into dt_Table01(name,psw) values(@name,@psw)";
10 dbcom.CommandType = CommandType.Text;
11
12 //添加参数
13 DbParameter dbparameter = dbproviderfactory.CreateParameter();
14 dbparameter.ParameterName ="@name";
15 dbparameter.DbType = DbType.String;
16 dbparameter.Value ="xiaolong";
17 dbcom.Parameters.Add(dbparameter);
18 dbparameter = dbproviderfactory.CreateParameter();
19 dbparameter.ParameterName ="@psw";
20 dbparameter.DbType = DbType.String;
21 dbparameter.Value ="123";
22 dbcom.Parameters.Add(dbparameter);
23 dbcon.Open();
24 try
25 {
26 dbcom.ExecuteNonQuery();
27 }
28 catch(Exception ex)
29 {
30 //将错误写入日志里
31 AddLogError(ex.ToString());
32 Response.Redirect("~/ErrorPage.aspx");
33 }
34 finally
35 {
36 dbcon.Close();
37 }
复制代码

 

 

  第二种当然是调用存储过程

复制代码
1 //存储过程的
2 string ConnectionString = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ConnectionString;
3 string ProviderName = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ProviderName;
4 DbProviderFactory dbproviderfactory = DbProviderFactories.GetFactory(ProviderName);
5 DbConnection dbcon = dbproviderfactory.CreateConnection();
6 dbcon.ConnectionString = ConnectionString;
7 DbCommand dbcom = dbproviderfactory.CreateCommand();
8 dbcom.Connection = dbcon;
9 dbcom.CommandType = CommandType.StoredProcedure;
10 dbcom.CommandText ="InsertTable01";
11 DbParameter dbparameter = dbproviderfactory.CreateParameter();
12 dbparameter.DbType = DbType.String;
13 dbparameter.ParameterName ="@name";
14 dbparameter.Value ="xiaohe";
15 dbcom.Parameters.Add(dbparameter);
16 dbparameter = dbproviderfactory.CreateParameter();
17 dbparameter.ParameterName ="@psw";
18 dbparameter.DbType = DbType.String;
19 dbparameter.Value ="123";
20 dbcom.Parameters.Add(dbparameter);
21 dbcon.Open();
22 try
23 {
24 dbcom.ExecuteNonQuery();
25 }
26 catch (Exception ex)
27 {
28 AddLogError(ex.ToString());
29 Response.Redirect("~/ErrorPage.aspx");
30 }
31 finally
32 {
33 dbcon.Close();
34 }
复制代码

 

 第三种就是可能同时插入两张表或者三张表或者更多。必须是同时,运用到了事务回滚机制。存储过程写法就不给出来了和上面一样。只是在存储过程编写事务。

复制代码
1 //同时插入两张的表
2 string ConnectionString = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ConnectionString;
3 string ProviderName = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ProviderName;
4 DbProviderFactory dbproviderfactory = DbProviderFactories.GetFactory(ProviderName);
5 DbConnection dbcon = dbproviderfactory.CreateConnection();
6 dbcon.ConnectionString = ConnectionString;
7 DbCommand dbcom = dbproviderfactory.CreateCommand();
8 dbcom.Connection = dbcon;
9 dbcom.CommandType = CommandType.Text;
10
11 DbParameter dbparameter = dbproviderfactory.CreateParameter();
12 dbparameter.DbType = DbType.String;
13 dbparameter.ParameterName ="@name";
14 dbparameter.Value ="xiaohei";
15 dbcom.Parameters.Add(dbparameter);
16 dbparameter = dbproviderfactory.CreateParameter();
17 dbparameter.ParameterName ="@psw";
18 dbparameter.DbType = DbType.String;
19 dbparameter.Value ="123";
20 dbcom.Parameters.Add(dbparameter);
21 dbparameter = dbproviderfactory.CreateParameter();
22 dbparameter.DbType = DbType.String;
23 dbparameter.ParameterName ="@teacher";
24 dbparameter.Value ="heihei";
25 dbcom.Parameters.Add(dbparameter);
26
27 dbcon.Open();
28 //事务开始
29 DbTransaction dbtran = dbcon.BeginTransaction();
30 dbcom.Transaction = dbtran;
31
32 try
33 {
34 dbcom.CommandText ="insert into dt_table01(name,psw) values(@name,@psw)";
35 dbcom.ExecuteNonQuery();
36 dbcom.CommandText ="insert into dt_table03(teacher,psw) values(@teacher,@psw)";
37 dbcom.ExecuteNonQuery();
38 //成功就提交
39 dbtran.Commit();
40 }
41 catch (Exception ex)
42 {
43 //出错就回滚
44 dbtran.Rollback();
45 AddLogError(ex.ToString());
46 Response.Redirect("~/ErrorPage.aspx");
47 }
48 finally
49 {
50 dbcon.Close();
51 dbtran.Dispose();
52 }
复制代码

第四种

通过使用DbDataAdapter来获得查询的结果

复制代码
1 //查询数据库
2 string ConnectionString = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ConnectionString;
3 string ProviderName = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ProviderName;
4 DbProviderFactory dbproviderfactory = DbProviderFactories.GetFactory(ProviderName);
5 DbConnection dbcon = dbproviderfactory.CreateConnection();
6 dbcon.ConnectionString = ConnectionString;
7 DbCommand dbcom = dbproviderfactory.CreateCommand();
8 dbcom.Connection = dbcon;
9 dbcom.CommandText ="Select * from dt_Table01 where name=@name";
10 dbcom.CommandType = CommandType.Text;
11 DbParameter dbparameter = dbproviderfactory.CreateParameter();
12 dbparameter.ParameterName ="@name";
13 dbparameter.DbType = DbType.String;
14 dbparameter.Value ="xiaolong";
15 dbcom.Parameters.Add(dbparameter);
16 DataSet ds =new DataSet();
17 DbDataAdapter dbDataAdapeter = dbproviderfactory.CreateDataAdapter();
18 dbDataAdapeter.SelectCommand = dbcom;
19 try
20 {
21 dbDataAdapeter.Fill(ds, "data");
22 }
23 catch (Exception ex)
24 {
25 AddLogError(ex.ToString());
26 Response.Redirect("~/ErrorPage.aspx");
27 }
28 finally
29 {
30 dbDataAdapeter.Dispose();
31 }
复制代码

第5种

使用DbDataReader或者查询结果,这里给出查询第一行第一列值,当然也可以直接调用Command.ExecuteScalar();函数

复制代码
1 string ConnectionString = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ConnectionString;
2 string ProviderName = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ProviderName;
3 DbProviderFactory dbproviderfactory = DbProviderFactories.GetFactory(ProviderName);
4 DbConnection dbcon = dbproviderfactory.CreateConnection();
5 dbcon.ConnectionString = ConnectionString;
6 DbCommand dbcom = dbproviderfactory.CreateCommand();
7 dbcom.Connection = dbcon;
8 dbcom.CommandText ="Select * from dt_Table01 where name=@name";
9 dbcom.CommandType = CommandType.Text;
10 DbParameter dbparameter = dbproviderfactory.CreateParameter();
11 dbparameter.ParameterName ="@name";
12 dbparameter.DbType = DbType.String;
13 dbparameter.Value ="xiaolong";
14 dbcom.Parameters.Add(dbparameter);
15 dbcon.Open();
16 DbDataReader dbDataReader=null;
17 string re =string.Empty;
18 try
19 {
20 dbDataReader= dbcom.ExecuteReader(CommandBehavior.SingleRow);
21 }
22 catch (Exception ex)
23 {
24 AddLogError(ex.ToString());
25 Response.Redirect("~/ErrorPage.aspx");
26 }
27 finally
28 {
29 dbcon.Close();
30 dbDataReader.Close();
31 }
32 //读入值
33 if (dbDataReader.Read())
34 {
35 //得到第一列值
36 re = dbDataReader.GetValue(0).ToString();
37 }
38 re = re +"hah";
复制代码

当然还可以自己编写一些常用的调用例如:或者查询结果第一列的值等等。

大致上就是以上这几种形式了。

存储过程,Command直接执行,DataReader,DataAdapter,事务

由于笔者知识有限,如果还有其他形式请您补充上来

转载于:https://www.cnblogs.com/blogbai/archive/2012/09/26/2703881.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从像素坐标到相机坐标_【视觉知识】机器视觉几何坐标概论

作者:林青春来源:知乎一、机器视觉几何坐标概论机器视觉系统有三大坐标系,分别是:1、世界坐标系,2、摄像机坐标系,3、图像(像素)坐标系。1、世界坐标系世界坐标系(Xw,Yw,Zw)是目标物…

vb如何嵌套chrome_译丨如何为开源软件做出贡献

原文:How to Contribute to Open Source Software作者:Matt Eland译者:博轩为保证文章的可读性,本文采用意译,转载请保留原文链接前段时间参加了2020年1月11日Node party线下分享,justjavac 大佬分享的主题…

codesys中打开linux端的串口_CODESYS版本3.5 SP14 Patch 3发布

此版本有以下内容更新主要功能概述:CODESYS Engineering改进了智能输入辅助、监视列表、监视、 CPU负载、编译调试等;新的数据类型:LREAL或REAL中的__VECTOR [3];用于同步任务特别是多核架构的的原子操作符;一般改进:在源代码中的设备树、全局…

合并果子(Vijos P1097)

刚刚做出这道题,感觉很兴奋啊,对于我这种弱菜来说能完美的AC这道题真是令人振奋不已啊! (情不自禁的将AC记录发上来了,勿怪勿怪!) 这道题是我们向总点名要做的,这几天学了很多新内容…

vim 删除行_【收藏】138条 Vim 命令、操作、快捷键全

关注我,你的眼睛会怀孕命令历史以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。启动vim在命令行窗口中输入以下命令即可vim 直接启动vimvim filename 打开vim并创建名为filename的文件文件命令打开单个文件vim file同…

vlookup练习_那个vlookup,我总是学不会啊

在Excel函数中,有那么的一个万金油Excel函数,它既可以正向查找,逆向查找,还可以多条件查找,它就是Vlookup。Vlookup与IF、sumifs/countifs誉为四大必学Excel函数。以下内容节选自【快速入门Excel基础教程】中的第4-2章…

uniapph5授权成功后返回上一页_记一次授权系统的安全测试

山东泽鹿安全威胁管理 漏洞运营 应急响应原创声明:泽鹿安全原创文章,欢迎转载,请注明出处!ID : 秋水拿到授权系统IP,首先测一下目录找后台,Nmap扫一下端口,看看后台是不是在其他端口就可以了…

罗斯蒙特电磁流量计8723说明书_罗斯蒙特8732E电磁流量计故障原因及解决办法!...

今天我们来说说罗斯蒙特8732E电磁流量计的一些基本故障和解决办法,我们在排除电磁流量计的故障时,确定问题至关重要。下面提供了无法正常工作的电磁流量计表现出的常见症状。此表提供了潜在的原因以及为每种症状建议的纠正措施。流量计故障:0…