概括ADO.NET数据库连接的所有形式(基础)
2010-09-02 08:32
363 查看
可能大家进来会喷笔者,这么基础的知识还放在首页。那么笔者就要问问大家了,你可能熟悉其中部分数据库读取的形式,但是熟悉全部的估计很少,或者你完全忘记了,因为这些形式被封装到你自己框架的底层,自己搞过一两次就在也没有动手写过了。但是笔者觉得这部分知识是应该牢固掌握的,这个是基础。好如果是已经掌握的大侠,看看笔者写的内容,提出点建议或者补充笔者的内容。
好了废话不多说看
第一种
通过直接在cs文件中编写查询语句调用 dbcom.ExecuteNonQuery();执行插入数据
第二种当然是调用存储过程
第三种就是可能同时插入两张表或者三张表或者更多。必须是同时,运用到了事务回滚机制。存储过程写法就不给出来了和上面一样。只是在存储过程编写事务。
第四种
通过使用DbDataAdapter来获得查询的结果
第5种
使用DbDataReader或者查询结果,这里给出查询第一行第一列值,当然也可以直接调用Command.ExecuteScalar();函数
当然还可以自己编写一些常用的调用例如:或者查询结果第一列的值等等。
大致上就是以上这几种形式了。
存储过程,Command直接执行,DataReader,DataAdapter,事务
由于笔者知识有限,如果还有其他形式请您补充上来
本文代码下载
好了废话不多说看
第一种
通过直接在cs文件中编写查询语句调用 dbcom.ExecuteNonQuery();执行插入数据
//连接字符串 string ConnectionString = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ConnectionString; string ProviderName = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ProviderName; DbProviderFactory dbproviderfactory = DbProviderFactories.GetFactory(ProviderName); DbConnection dbcon = dbproviderfactory.CreateConnection(); dbcon.ConnectionString = ConnectionString; DbCommand dbcom = dbproviderfactory.CreateCommand(); dbcom.Connection = dbcon; dbcom.CommandText = "Insert into dt_Table01(name,psw) values(@name,@psw)"; dbcom.CommandType = CommandType.Text; //添加参数 DbParameter dbparameter = dbproviderfactory.CreateParameter(); dbparameter.ParameterName = "@name"; dbparameter.DbType = DbType.String; dbparameter.Value = "xiaolong"; dbcom.Parameters.Add(dbparameter); dbparameter = dbproviderfactory.CreateParameter(); dbparameter.ParameterName = "@psw"; dbparameter.DbType = DbType.String; dbparameter.Value = "123"; dbcom.Parameters.Add(dbparameter); dbcon.Open(); try { dbcom.ExecuteNonQuery(); } catch(Exception ex) { //将错误写入日志里 AddLogError(ex.ToString()); Response.Redirect("~/ErrorPage.aspx"); } finally { dbcon.Close(); }
第二种当然是调用存储过程
//存储过程的 string ConnectionString = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ConnectionString; string ProviderName = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ProviderName; DbProviderFactory dbproviderfactory = DbProviderFactories.GetFactory(ProviderName); DbConnection dbcon = dbproviderfactory.CreateConnection(); dbcon.ConnectionString = ConnectionString; DbCommand dbcom = dbproviderfactory.CreateCommand(); dbcom.Connection = dbcon; dbcom.CommandType = CommandType.StoredProcedure; dbcom.CommandText = "InsertTable01"; DbParameter dbparameter = dbproviderfactory.CreateParameter(); dbparameter.DbType = DbType.String; dbparameter.ParameterName = "@name"; dbparameter.Value = "xiaohe"; dbcom.Parameters.Add(dbparameter); dbparameter = dbproviderfactory.CreateParameter(); dbparameter.ParameterName = "@psw"; dbparameter.DbType = DbType.String; dbparameter.Value = "123"; dbcom.Parameters.Add(dbparameter); dbcon.Open(); try { dbcom.ExecuteNonQuery(); } catch (Exception ex) { AddLogError(ex.ToString()); Response.Redirect("~/ErrorPage.aspx"); } finally { dbcon.Close(); }
第三种就是可能同时插入两张表或者三张表或者更多。必须是同时,运用到了事务回滚机制。存储过程写法就不给出来了和上面一样。只是在存储过程编写事务。
//同时插入两张的表 string ConnectionString = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ConnectionString; string ProviderName = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ProviderName; DbProviderFactory dbproviderfactory = DbProviderFactories.GetFactory(ProviderName); DbConnection dbcon = dbproviderfactory.CreateConnection(); dbcon.ConnectionString = ConnectionString; DbCommand dbcom = dbproviderfactory.CreateCommand(); dbcom.Connection = dbcon; dbcom.CommandType = CommandType.Text; DbParameter dbparameter = dbproviderfactory.CreateParameter(); dbparameter.DbType = DbType.String; dbparameter.ParameterName = "@name"; dbparameter.Value = "xiaohei"; dbcom.Parameters.Add(dbparameter); dbparameter = dbproviderfactory.CreateParameter(); dbparameter.ParameterName = "@psw"; dbparameter.DbType = DbType.String; dbparameter.Value = "123"; dbcom.Parameters.Add(dbparameter); dbparameter = dbproviderfactory.CreateParameter(); dbparameter.DbType = DbType.String; dbparameter.ParameterName = "@teacher"; dbparameter.Value = "heihei"; dbcom.Parameters.Add(dbparameter); dbcon.Open(); //事务开始 DbTransaction dbtran = dbcon.BeginTransaction(); dbcom.Transaction = dbtran; try { dbcom.CommandText = "insert into dt_table01(name,psw) values(@name,@psw)"; dbcom.ExecuteNonQuery(); dbcom.CommandText = "insert into dt_table03(teacher,psw) values(@teacher,@psw)"; dbcom.ExecuteNonQuery(); //成功就提交 dbtran.Commit(); } catch (Exception ex) { //出错就回滚 dbtran.Rollback(); AddLogError(ex.ToString()); Response.Redirect("~/ErrorPage.aspx"); } finally { dbcon.Close(); dbtran.Dispose(); }
第四种
通过使用DbDataAdapter来获得查询的结果
//查询数据库 string ConnectionString = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ConnectionString; string ProviderName = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ProviderName; DbProviderFactory dbproviderfactory = DbProviderFactories.GetFactory(ProviderName); DbConnection dbcon = dbproviderfactory.CreateConnection(); dbcon.ConnectionString = ConnectionString; DbCommand dbcom = dbproviderfactory.CreateCommand(); dbcom.Connection = dbcon; dbcom.CommandText = "Select * from dt_Table01 where name=@name"; dbcom.CommandType = CommandType.Text; DbParameter dbparameter = dbproviderfactory.CreateParameter(); dbparameter.ParameterName = "@name"; dbparameter.DbType = DbType.String; dbparameter.Value = "xiaolong"; dbcom.Parameters.Add(dbparameter); DataSet ds = new DataSet(); DbDataAdapter dbDataAdapeter = dbproviderfactory.CreateDataAdapter(); dbDataAdapeter.SelectCommand = dbcom; try { dbDataAdapeter.Fill(ds, "data"); } catch (Exception ex) { AddLogError(ex.ToString()); Response.Redirect("~/ErrorPage.aspx"); } finally { dbDataAdapeter.Dispose(); }
第5种
使用DbDataReader或者查询结果,这里给出查询第一行第一列值,当然也可以直接调用Command.ExecuteScalar();函数
string ConnectionString = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ConnectionString; string ProviderName = ConfigurationManager.ConnectionStrings["db_Test01ConnectionString"].ProviderName; DbProviderFactory dbproviderfactory = DbProviderFactories.GetFactory(ProviderName); DbConnection dbcon = dbproviderfactory.CreateConnection(); dbcon.ConnectionString = ConnectionString; DbCommand dbcom = dbproviderfactory.CreateCommand(); dbcom.Connection = dbcon; dbcom.CommandText = "Select * from dt_Table01 where name=@name"; dbcom.CommandType = CommandType.Text; DbParameter dbparameter = dbproviderfactory.CreateParameter(); dbparameter.ParameterName = "@name"; dbparameter.DbType = DbType.String; dbparameter.Value = "xiaolong"; dbcom.Parameters.Add(dbparameter); dbcon.Open(); DbDataReader dbDataReader=null; string re = string.Empty; try { dbDataReader= dbcom.ExecuteReader(CommandBehavior.SingleRow); } catch (Exception ex) { AddLogError(ex.ToString()); Response.Redirect("~/ErrorPage.aspx"); } finally { dbcon.Close(); dbDataReader.Close(); } //读入值 if (dbDataReader.Read()) { //得到第一列值 re = dbDataReader.GetValue(0).ToString(); } re = re + "hah";
当然还可以自己编写一些常用的调用例如:或者查询结果第一列的值等等。
大致上就是以上这几种形式了。
存储过程,Command直接执行,DataReader,DataAdapter,事务
由于笔者知识有限,如果还有其他形式请您补充上来
本文代码下载
相关文章推荐
- 概括ADO.NET数据库连接的所有形式(基础)
- 概括ADO.NET数据库连接的所有形式(基础)
- 一起谈.NET技术,概括ADO.NET数据库连接的所有形式(基础)
- 概括ADO.NET数据库连接的所有形式(基础)
- 概括ADO.NET数据库连接的所有形式(基础)
- 概括ADO.NET中Database 数据库连接形式(基础)
- C#进阶ADO.NET基础一 基本概念、数据库连接操作基础
- ADO.NET基础(1) 连接数据库
- 在Visual Basic.NET使用ADO访问数据库(转for各种数据库连接)
- 总结了一下ADO.NET数据库连接的相关知识
- ADO.net 中数据库连接方式
- ADO.net连接数据库步骤及分析
- ADO.NET 连接数据库(Oracle、SqlServer、Access、ODBC)
- ADO,ADO.NET,OLEDB,ODBC连接数据库的区别
- ADO.NET连接数据库字符串
- ADO.NET 连接数据库的另一种方法(通过配置文件和基类转化,适用于后期维护)
- ADO.net浅显理解以及连接数据库
- ADO.NET中数据库连接的两种模式:连接模式和断开模式
- C# 根据ADO.NET数据库连接字符串构建EntityFrame数据库连接字符串