ADO.NET是微软 . NET数据库的访问构建,主要提供一个面向对象的数据库访问构建,用来开发数据库应用程序。
ADO.NET主要包括;
private void From1_Load(object sender,EventArgs e)
{
//创建数据库连接字符串
string SqlStr = "Server=XIAOKE ;User Id=sa;Pwd= 123;DataBase=db_EMS";
SqlConnection con = new SqlConnection(SqlStr);//创建数据库连接对象
con.Open();
if(con.State==connectionState.Open)
{
label1.Text="数据库连接成功!";
con.Close();
}
if(con.State==connectionState.Closed)
{
label2.Text="数据库连接关闭!";
}
2.Command对象
使用command对象对数据源执行查询,添加,删除和修改各种操作,操作实现的方式可以使用SQL语句,也可以使用存储过程。command对象分成4种,分别是SqlCommand,OleDbCommand、OdbcCommand、OCommand,在实际的编程过程中应该根据访问的数据源不同,选择对应的Command对象。
//创建数据库连接
string conn = "Server=XIAOKE ;User Id=sa;Pwd= 123;DataBase=db_EMS";
qlConnection comm = new SqlConnection();
comm.Connection= conn;//创建数据库连接对象
comm.CommandType=CommandType.Text;//设置要执行的类型
comm.CommandText="select * from tb_stock";//设置要执行的语句
Command对象常用方法及说明如下所示
ExecuteNonQuery:用于执行非SELECT命令,你如INSERT\DELETE\UPDATE,并返回3个命令所影响的数据行数;另外也可以执行一些数据定义命令,比如新建、更新、删除数据库对象(如表,索引)
ExecuteScalar:用于执行SELECT查询命令,返回数据中第一行第一列的值,该方法通常用来执行那些用到COUNT或SUM函数的SELECT命令
ExecuteReader:,并返回一个DataReader对象,这个DataReader对象是一个只读向前的数据集。
例:向数据表中添加编程词典信息
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("Server=YXZ-PC;User Id=sa;Pwd=yanxianze01;DataBase=E_Market");
String strsql = "insert into tb_PDic (Name,Money)values(1,'"+textBox1.Text+"',"+Convert.ToDecimal(textBox2.Text)+")";
SqlCommand comm = new SqlCommand(strsql,conn);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
//判断ExecuteNonQuery返回的参数是否大于0,大于0表示添加成功
if (Convert.ToInt32(comm.ExecuteNonQuery()) > 0)
{
label1.Text = "添加成功";
}
else
{
label1.Text = "添加失败";
}
conn.Close();
应用Command对象调用存储过程
参考:https://www.codeproject.com/Articles/126898/Sql-Server-How-to-write-a-Stored-procedure-in-Sql
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection sqlcon = new SqlConnection("Server=YXZ-PC;User Id=sa;Pwd=yanxianze01;DataBase=E_Market");//创建数据库连接对象
SqlCommand sqlcmd = new SqlCommand("select * from tb_PDic order by ID asc",sqlcon);//创建sqlcommand对象
if (sqlcon.State == ConnectionState.Closed)
{
sqlcon.Open();
}
SqlDataReader sqldr = sqlcmd.ExecuteReader();
richTextBox1.Text = "编号 版本 价格\n";
try
{
if (sqldr.HasRows) //判断sqldatareader对象中是否有数据
{
while (sqldr.Read()) //循环读取sqldatareader对象中的数据
{
richTextBox1.Text += "" + sqldr["ID"] + " " + sqldr["Name"] + " " + sqldr["Money"] + "\n";//显示读取的详细信息
}
}
}
catch (SqlException ex) //捕获数据库异常
{
MessageBox.Show(ex.ToString()); //输出详细信息
}
finally
{
sqldr.Close();
sqlcon.Close();
}
}
4. DataSet 对象
DataSet对象是ADO.NET的核心成员,他是支持ADO.NET断开式、分布式数据方案的核心对象,也是实现基于非连接的数据查询的核心组件。DataSet对象时建在内存中的集合对象,它可以包含任意数量的数据表以及所有表的约束、索引和关系等。它实质上相当于在内存中的一个小型关系数据库。
一个DataSet对象包含一组DataTable对象和DataRelation对象,其中每个DataTable对象都由DataColum\DataROW\CONSTRAINT集合对象组成。
DataSet对象将数据库中的数据复制了一份放在了用户本地的内存中,供用户在不连接数据库的情况下读取数据,以便充分利用客户端资源,降低数据库的压力。
DataAdepter对象
DataAdepter对象是一种用来充当dataset对象与实际数据源之间桥梁的对象,只要由dataset对象就有dataadepter对象,它的工作步骤:一种时通过command对象执行sql语句,从数据源中检索数据,并将检索到的结果填充到dataset对象中。另一种时把用户对dataset对象作出的更改写入到数据源中。
填充dataset数据集
FILL方法的3种重载形式
int Fill(DataSet dataset):添加或更新参数所指定的dataset数据集,返回值时受影响的行数。
int Fill(DataTable datable):将数据填充到一个数据表中。
int Fill(DataSet dataset,string tableName):填充指定的Dataset数据集中的指定表。
例:添加一个DataGridView控件,用来显示使用dataadepter对象填充后的dataset数据集中的数据。
private void Form1_Load(object sender, EventArgs e)
{
string strcon = "Server=YXZ-PC;User Id=sa;Pwd=yanxianze01;Database=E_Market";//定义数据库连接字符串
SqlConnection sqlcon = new SqlConnection(strcon);//创建数据库连接对象
SqlDataAdapter sqlda = new SqlDataAdapter("select * from tb_PDic",sqlcon);
DataSet myds = new DataSet();//创建数据集对象
sqlda.Fill(myds, "tabName");//填充数据集中的指定表
dataGridView1.DataSource = myds.Tables["tabName"];//为 dataGridView1指定数据源
}