在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
虽然我们都知道ADO.NET是对数据库的操作,但是要真的说出ADO.NET的具体含义还不是很容易。 ADO.NET的几大组成部分 Connection(用于建立与 数据库的连接) 通常,从程序中访问数据库的方法是: 创建一个到数据库的连接 下面就分别根据这一个过程结合ADO.NET的五大类库进行解释。 要想使用ADO.NET需要在程序中引用System.Data.SqlClient。其中包含了对Sql Server进行操作的数据访问类: SqlConnection:连接数据库 建立连接 首先,要想访问数据库,我们需要一个媒介把程序与数据库连接起来。这就是连接字符串,它的基本语法为:Data Source(数据源) + Initial Catalog(数据库名称) + User ID(用户名) + Password(密码)。 复制代码 代码如下: String connectString = "Data Source = myServerAddress;Initial Catalog = myDataBase;User Id = myUserName; Password = myPassword;"; 或者 复制代码 代码如下: String connectString = "Server =myServerAddress;Database = myDataBase; User Id = myUsername; Password = myPassword;"; 注意:对于Sql Server来说,它支持两种身份验证方法,一种是windows身份验证,另一种是Sql Server身份验证。如果要用windows身份验证,就需要在连接字符串中包括Integrated Security属性。该属性默认为False。需要设置为True后才能使用windows身份验证。 接着,有了连接字符串就可以创建连接对象了。 SqlConnection connection = new SqlConnection(connecString); 复制代码 代码如下: SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder() { DataSource=”“, InitialCatalog=”“, UserID=”“, Password=”” }; SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString()); 然后使用连接对象可以打开或关闭连接。 connection.Open(); 执行命令 打开连接之后就可以操作数据库了,在这里需要用到SqlCommand命令对象。 创建命令对象: SqlCommand command = connection.CreateCommand(); 或 SqlCommand command = new SqlCommand(); SqlCommand包含了几个重要的属性: 几个重要的方法: ExecuteNonQuery:返回被SQL语句执行影响的行数(int),主要执行增删改操作。 举例说明: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data;//必须 using System.Data.SqlClient;//必须 namespace Command { class Program { static void Main(string[] args) { SqlConnectionStringBuilder conStr = new SqlConnectionStringBuilder(); conSt.DataSource=@".\SQLEXPRESS"; conStr.IntegratedSecurity=true; conStr.InitialCatalog="db_Test"; StringBuilder strSQL = new StringBuilder(); for(int i=0;i<=100;i++) { strSQL.Append("insert into tb_Test"); strSQL.Append("values('"); string name = "test"+i.ToString(); strSQL.Append(name); } using(SqlConnection con = new SqlConnection(conStr.ConnectionString)) { con.Open(); SqlCommand cmd = new SqlCommand(strSQL.ToString(),con); int impactedNumber = cmd.ExecuteNonQuery();//返回受影响的行数 object firstData = cmd.ExecuteScalar();//返回执行结果中的第一行第一列,此方法可用于获取插入数据的ID,(int lineNumber =(int)cmd.ExecuteScalar();) } } } } SQL参数 ParameterName:设置参数名 和几个重要的方法: AddWithVlue Add 举例说明: SqlConnection connection =new SqlConnection("")) { SqlCommand cmd = connection.CreateCommand(); cmd.CommandText=""; cmd.Parameters.Add("@name",SqlDbType.NVarChar).Value = "deng";//方法一 cmd.Parameters.AddWithValue(@"name","deng");//方法二 SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@name",SqlDbType.NvarChar,100){Value="deng"}, }; cmd.Parameters.AddRange(parameters);//可以放一个参数数组,包含多条参数,在此只举一个例子 } 可以通过cmd.Parameters[i].Value设置和读取数值。 数据读取 利用查询语句得到的数据信息需要通过数据读取器进行操作。 SqlConnetion con = new SqlConnection("") { con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText=""; SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection) { While(dr.Read()) { string str = dr.GetSqlString(0).ToString(); } } } 介绍几个常用的方法: GetOrdinal:可以获取指定列名的序列号,int name = dr.GetOrdinal(“name”); 常用属性有: HasRow:判断是否有数据。 事务 需要用到SqlTransaction类,需要在指定位置命名存储点,该存储点之后的操作都将会回滚。 SqlConnection con = new SqlConnection(strCon); con.Open(); SqlTransaction transaction = con.BeginTransaction(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText = "" cmd.Transaction = transaction; transaction.Save("transaction point"); transaction.Rollback("transaction point"); 数据适配器 SqlDataAdapter类有四个重载构造函数: 无参 DataSet dataSet = new DataSet(); SqlConnection con = new SqlConnection(""); con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText="select xxx from tb_xxx"; SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd); dataAdapter.Fill(dataSet); 填充后的数据可以使用SqlCommandBuilder进行增删改查。 例子: SqlConnection con = new SqlConnection(ConnectionString(); con.Open(); SqlDataAdapter da = new SqlDataAdapter("select xxx from tb_xx"); DataSet ds =new DataSet(); da.Fill(ds); SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da); DataRow row = ds.Tables[0].NewRow(); row[0]="a"; row[1]="b"; ds.Tables[0].Rows.Add(row); da.Update(ds); SqlCommandBuilder 可以把DataSet增加的数据转化为SQL语句用来更新数据库。然后调用Update方法。 总结 因为现在使用的框架或着库都已经封装了ADO.NET,可能在日常工作中很少会再从头开始编写ADO.NET来连接数据库,但是在.net面试中还是非常常见的,希望可以借此加深一下印象。另外,本人目前持有的是银蕨签证,可以在新西兰求职9个月,期间如果找到相关专业工作,可直接转2年的工作签证,非常方便移民,该签证每年全球发放300个,虽然还没有working holiday签证为大家所熟知,但是每年的争抢还是很激烈的。需要了解相关事宜的可以给我留言。本人的第一篇博客,属于整理资料,并非完全原创,如有哪方面不正确,还希望大神可以多多指正。 |
请发表评论