1.ADO.NET的命名空间及导入
1.常用的数据库访问技术
开放式互连技术(ODBC)
对象链接与嵌入式数据库技术(OLE DB)
Java数据库互连技术(JDBC)
ActiveX数据库对象技术(ADO)
ADO.NET技术等
2.认识ADO.NET技术
1.ADO.NET主要包括
Connection:数据库连接对象,它的功能是创建与指定数据源的连接,并完成初始化的工作。
Command:数据库命令对象,用于在数据源上执行的sql语句或存储过程。
DataAdapter:数据适配器,该对象是一个双向通道,用来把数据从数据源中读到一个内存表中或把内存表中的数据写回到一个数据源中
DataTable:是内存中的一个关系数据库表
Dataset:数据集,表示整个数据集,其中包括表,约束,以及表与表之间的关系
2.ado.net是一组用于和数据源进行交互的面向对象类库,用于实现用户到SQL Server等数据源的连接,为用户利用SQL语句实现对数据源中数据的查询、处理和更新提供支持。
3.ADO.NET的工作原理及访问架构
ADO.NET是.NET框架中的数据访问模型,包含了两个核心组件:
1.数据提供程序.NET Framework提供程序负责与物理数据源的连接,用于实现对底层数据源的访问
2.数据集DataSet代表实际的数据
1.首先引入数据库连接的命名空间
using System.Data;using System.Data.SqlClient;
可以引入多种数据库;我这里以链接SQLserver来做示范:
2.首先定义一个字符串用来存放数据源,代码如下:
static string connstr = "server =.;database=hism;uid=sa;pwd=123456;";
其中.表示本地服务器也可以用localhost来表示本地服务器,database表示链接的数据库,uid表示超级管理员的账号,pwd表示密码。
2.利用Dataset来暂时存放查出来的数据
定义一个Dataset方法代码如下:
public static DataSet getDatasetData(SqlParameter[] sqlParameters, string sqlstr){DataSet ds = new DataSet();SqlConnection conn = new SqlConnection(connstr);
每一次访问数据库都要尝试一下能不能打开数据库以防打不开数据库找不到出错的地方,如何尝试打开数据库,利用到了try这个关键字实现的代码如下:
try{conn.Open();SqlCommand cmd = new SqlCommand();cmd.CommandText = sqlstr;cmd.Connection = conn;if (sqlParameters != null){cmd.Parameters.AddRange(sqlParameters);}SqlDataAdapter sda = new SqlDataAdapter(cmd);sda.Fill(ds, "searchdata");return ds;}
为了更好的知道出错的地方,利用catch来定义出错的提示词,Tables是链接的数据库的表,ex.Message是跳出的弹窗,DataTable表示表中的数据,DataColumn表示表中的列,
catch (Exception ex){DataTable dt = new DataTable();DataColumn dc = new DataColumn();dc.ColumnName = "错误提示";dt.Columns.Add(dc);DataRow dr = dt.NewRow();dr["错误提示"] = ex.Message;dt.Rows.Add(dr);ds.Tables.Add(dt);return ds;}
无论能不能打开数据库都要进行数据库的关闭,以防数据库一直打开造成数据库数据一直在启动中,数据一直在被调用,易造成数据缺失所以就要利用finally方法来前强制关闭数据库的链接:
finally{if (conn.State == ConnectionState.Open){conn.Close();}
3.下面就是一些经常要用到的对象及其属性:
.SqlCommand对象的常用属性和方法
属性或方法 | 说明 |
CommandText | 设置或获取在数据源上执行的SQL语句或存储过程名 |
Connection | 设置或返回与Command相关的Connection对象 |
CreateCommand() | 用于建立sqlCommand对象 |
ExecuteReader() | 执行CommandText中的SQL查询语句,查询值返回到DataReader对象 |
ExecuteScalar() | 返回单个值,如求和、求最大值等SQL聚合函数 |
ExecuteNonQuery() | 执行增、删、改等无返回值的SQL操作 |
.DataGridView控件的常用属性
属性 | 说明 |
---|---|
Columns | 所有列的集合 |
Rows | 所有行的集合 |
DataSource | 数据源 |
DataMember | 显示的表的名称 |
RowCount | 获取或设置DataGridview中的显示行 |
ReadOnly | 是否可编辑单元格 |
SelectedIndex | 获取选中行的索引 |
SelectedRow | 获取选中的行 |
如何利用dataGridView这个控件往查出的数据进行增、删、改、查的功能呢?
1.首先定义一个整型数据用来查找当前所有的单元格
int indexrow = dataGridView1.CurrentCell.RowIndex;
2.对查出的数据进行获取所有的行,以此来对后续的新增的字段进行操作来利用value.tostring()获取到你所输入的值,然后把这个值加到数据库中
string id = dataGridView1.Rows[indexrow].Cells["col_id"].Value.ToString();
3.建立SqlCommand对象来读取数据库中已经存在的文件
SqlParameter[] sqlParameters ={new SqlParameter("@id",id)}
4.最后返回并执行受影响的行数
int i = cmd.ExecuteNonQuery();if (i > 0){this.toolStripButton3.PerformClick();MessageBox.Show("新增成功!");}conn.Close();
我这里为了方便测试还设置了一个新增成功就弹出一个新增成功的窗口,一定不要忘了操作完要记得关闭数据库。DataGridView要插入数据一定要绑定SqlCommand对象不然不容易操作,这两个基本上是绑定在一起进行操作的,Dataset只是负责在数据库中暂时的调出数据并不能直接的操作里面的数据。要对数据库的数据进行操作还得是DataGridView这个控件和SqlCommand对象一起配合操作才可以操作数据库里面的数据。新手建议使用微软的SQLserve和Mysql来建立数据库,更易操作,功能也更多。DataGridView要在ui界面绑定字段,不然容易报错,导致项目出问题,字段要跟数据库的表中的数据一一对应。