目标:
什么是ADO.NET Connection对象
Command对象
DataReader对象
Demo
什么是ADO.NET:
ADO.NET是Microsoft最新推出的数据访问技术,由Microsoft ActiveX Data Objects (ADO)改进而来。
Connection对象:
Connection对象表示与数据源之间的连接。可通过它的各种不同属性指定数据源的类型、位置以及其他属性,可用它来与数据库建立连接或断开连接。我们常用的方式为直接在其构造方法中将数据库链接字符串当做参数,并实例出对象。
Connection对象的方法 :
Open()方法 用于打开数据库连接
Close()方法 用于关闭数据库连接
Command对象:
在数据源上执行的SQL语句或存储过程。命令包含向数据库提交的信息,并且由SQLCommand等特定于提供程序的类来实现。命令可以是存储过程调用、UPDATE语句以及返回结果的语句等。
Command对象的方法 :
ExecuteNonQuery()方法 用于执行INSERT、DELELE、UPDATE等语句并返回受影响的行数。
ExecuteReader ()方法 用于返回只读的结果集
ExecuteScalar()方法 用于返回执行结果的第一行第一例的值
DataReader对象:
DataReader从数据源中读取只进且只读的数据流。 注意:一般不需要直接创建SqlDataReader对象或OleDbDataReader对象,而是通过调用SqlCommand对象或OleDbCommand对象的ExecuteReader()方法来获取这些对象。
DataReader对象的方法:
Close()方法:关闭SqlDataReader对象
Read()方法:使SqlDataReader对象移到下一条记录上
GetName()方法:获取指定列的名称
GetValue()方法:以本地格式返回指定列的值
例:
(图1)
通过上图1,我们可以看的出是要为数据库里增加用户的姓名及密码,编号为自动生成。但是在窗体加载的时候,在下拉列表中,要加载俱所有的用户列表,方便将来的查询时选择用户。
那么当我们把界面设计好之后,首先要做的事情是要与数据库链接,并实现我们想要的操作。以下就是俱体的实现步骤:
1.在项目中,新建一个类文件命名为DataBase.cs
2.在DataBase文件中的头部引入命名空间using System.Data.SqlClient,当然,我这是在操作SQL数据库,如果要操作Access数据库则需要引用入using System.Data.OleDb。
3.接下来就要在类的内部申明一个私有的字段,用来做为数据库的连接对象。如:
private SqlConnection conn = new SqlConnection(@"server=.;database=qq;uid=sa;pwd=sa");
看以上代码,我们应用到了
Connection对象,在实列此对象时,需要在构造函数中写入连接字符串,用来告知连接对象要连接的数据库的服务器名,数据库名,用户名,及密码。
4.跟着我们将此字段重构封装为属性,代码如下:
protected SqlConnection Conn
{
get { return conn; }
}
目的是为了让Conn的访问性更加灵活。
图2
5.然后跟据建好的用户表Users表图2,建立一个相对应的类Users.cs 用来做Users表中所有的增删改查等操作。打开类文件后,同样要引入命名空间System.Data.SqlClient。然后使用Users类继承Database类。如:
class Users:DataBase
{
}
6.在Users类中,写增删改查的方法:
/// <summary>
/// 本方法是用来做添加操作的
/// </summary>
/// <param name="name">方法要求用户名</param>
/// <param name="pwd">方法要求密码</param>
/// <returns></returns>
public int Add(string name,string pwd)
{
string strSql = "insert into users(username,userpwd)values('"+name+"','"+pwd+"')";
Conn.Open();//打开数据库连接
SqlCommand cmd = new SqlCommand(strSql, Conn);//创建cmd执行对象
int i = cmd.ExecuteNonQuery();//使用执行对象cmd的方法ExecuteNonQuery()返回受影响行数。
Conn.Close();//关闭数据库连接
return i;//返回i
}
/// <summary>
/// 本方法是用来做删除操作的
/// </summary>
/// <param name="id">方法要求ID</param>
/// <returns></returns>
public int Delete(int id)
{
string strSql = "delete from users where id="+id;
Conn.Open();//打开数据库连接
SqlCommand cmd = new SqlCommand(strSql, Conn);//创建cmd执行对象
int i = cmd.ExecuteNonQuery();//使用执行对象cmd的方法ExecuteNonQuery()返回受影响行数。
Conn.Close();//关闭数据库连接
return i;//返回i
}
/// <summary>
/// 本方法是用来做更新操作的
/// </summary>
/// <param name="id">方法要求ID</param>
/// <returns></returns>
public int Update(int id,string name,string pwd)
{
string strSql = "update users set username='"+name+"',userpwd='"+pwd+"' where id=" + id;
Conn.Open();//打开数据库连接
SqlCommand cmd = new SqlCommand(strSql, Conn);//创建cmd执行对象
int i = cmd.ExecuteNonQuery();//使用执行对象cmd的方法ExecuteNonQuery()返回受影响行数。
Conn.Close();//关闭数据库连接
return i;//返回i
}
/// <summary>
/// 查询用户列表
/// </summary>
/// <returns></returns>
public ArrayList ListArray()
{
string strSql = "select username from users";
ArrayList array = new ArrayList();//创建ArrayList对象
SqlCommand cmd = new SqlCommand(strSql, Conn);//创建cmd执行对象
Conn.Open();//打开数据库连接
SqlDataReader dr = cmd.ExecuteReader();//使用执行对象cmd的方法ExecuteReader()执行SQL语句并返回结果集
while (dr.Read())//遍历所有结果集
{
array.Add(dr.GetValue(0));//取到结果集索引的第0列的值并添加到ArrayList对象中
}
Conn.Close();//关闭数据库连接
return array;//返回ArrayList对象
}
7.打开设计界面,在类中将Users类实例化为对象u如:Users u = new Users(),双击窗体标题栏,进入窗体加载事件所调用的方法。并写代码如下:
private void Form2_Load(object sender, EventArgs e)
{
foreach (string str in u.ListArray())//遍历所有的Users类中ListArray方法所返回的ArrayList的值
{
comboBox1.Items.Add(str);//将值添加到comboBox中
}
}
8.返回设计界面双击添加按纽,进入到单击按钮事件所调用的方法写代码如下:
private void button1_Click(object sender, EventArgs e)
{
if (u.Add(UserName.Text, UserPwd.Text) > 0)//执行u对象中的方法Add()并返回受影响的行数,看是否大于0
{
MessageBox.Show("添加成功了!");//如果大于0说明添加成功了,你可以查看一下数据库中的值
}
else
{
MessageBox.Show("数据出错,请联系管理员!");//否则的话添加失败。
}
}
然后运行起程序来,添加一个用户试试吧 :)