您的位置:首页 > 数据库

使用C#和ADO.NET数据库访问技术,实现CRUD--20180127

2018-01-27 22:29 976 查看
       ADO.NET是.NET Framework用于访问数据的组件。其优点是可以离线操作数据库,可以减少应用程序对服务器资源的占用,提高应用程序的效率。

       ASP.NET通过ADO.NET操作数据库。

       ADO.NET包含两大核心控件:1).NET Framework数据提供程序  2)DataSet数据集

       ADO.NET处理数据库的步骤实现:   1)连接到数据库

                                                                            2)连接到数据源   

                                                                            3)从数据源读取数据

                                                                            4)对数据进行处理

实现对数据的读取和CRUD处理

1.使用Command对象+DataReader对象

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
////使用Command命令
//连接数据库
string mycon = "data source=LAPTOP-OUL99L1B;database=student;Trusted_Connection=True";
SqlConnection conn = new SqlConnection(mycon);
SqlCommand mycom = new SqlCommand();           //创建command对象
//CRUDByCommand(conn, mycom);                        //对数据进行插入操作
}
private static void CRUDByCommand(SqlConnection conn, SqlCommand mycom)//利用command命令对数据库进行插入操作
{
try
{
conn.Open();//打开数据库
                //2从数据库中读取数据
                string sql = "select * from Students Where Name=@Name";//string.Format("select * from Students Where Name='{0}'", name);
                myCom.CommandText = sql;
                myCom.Parameters.Add("@Name", SqlDbType.VarChar).Value = "sfdf";
                SqlDataReader myReader = myCom.ExecuteReader();
                while (myReader.Read())//判断是否有数据
                {
                    string ID = myReader["ID"].ToString();
                    string StudentNo = myReader["StudentNo"].ToString();
                    string Name = myReader["Name"].ToString();
                    Console.WriteLine("{0},{1},{2}", ID, StudentNo, Name);
                }
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
conn.Close();                             //关闭数据库连接
}
}
}
}


2.使用DataAdapter+DataSet对象

下列代码实现了对数据的查询、增添、更新操作,删除操作与前面的三种操作类似,故没有列举出来。

在使用DataAda对象+DataSet对象实现对数据的操作的时候,应该注意以下两点:(1)对数据进行操作都会引起了数据的变化,但是这些操作可以被拒绝或接受。方法为:AcceptChanges()、RejectChanges()。(2)数据修改接受之后,只是DataSet里的数据发生了变化,要写回数据库还是需要调用DataAdapter对象的Update()方法,而且必须要有一个CommandBuilder对象来生成SQL语句。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//连接数据库
string mycon = "data source=LAPTOP-OUL99L1B;database=student;Trusted_Connection=True";
SqlConnection conn = new SqlConnection(mycon);

////使用DataSet对象
DataSet myDataSet = new DataSet();   //创建DataSet对象

//对数据进行修改操作
//string strsqlUpd;
//strsqlUpd = UpdateByDataSet(conn, myDataSet);

//对数据进行插入操作
InsertByDataSet(conn, myDataSet);
}

private static void InsertByDataSet(SqlConnection conn, DataSet myDataSet)//使用DataSet对象对数据进行插入处理
{
string strsql;
strsql = "select * from student";
SqlDataAdapter myDataAdapter = new SqlDataAdapter(strsql, conn);
myDataAdapter.Fill(myDataSet, "student");

//输出表中的数据
PrintValues(myDataSet);
Console.WriteLine();

//使用DataSet对象对数据进行插入
//CurrentModifyTbale = myDataSet.Tables[0];
DataRow addRow = myDataSet.Tables[0].NewRow();
addRow[0] = "20150808";
addRow[1] = "ynynhh";
myDataSet.Tables[0].Rows.Add(addRow);

//将DataSet更新的数据同步更新到数据库中
SqlCommandBuilder cmdBld = new SqlCommandBuilder(myDataAdapter);
myDataAdapter.Update(myDataSet,"student");

//输出修改后的表中的数据
Console.WriteLine("修改后的表:");
PrintValues(myDataSet);
Console.ReadKey();
}

private static string UpdateByDataSet(SqlConnection conn, DataSet myDataSet)//使用DataSet对象对数据进行修改处理
{
string strsql;
strsql = "select * from student";
SqlDataAdapter myDataAdapter = new SqlDataAdapter(strsql, conn);
myDataAdapter.Fill(myDataSet, "student");

//输出表中的数据
PrintValues(myDataSet);
Console.WriteLine();

//使用DataSet对象对数据进行修改
DataRow row1 = myDataSet.Tables[0].Rows[1];
row1.BeginEdit();
row1[0] = "20160107";
row1[1] = "ynn";
row1.EndEdit();

//将DataSet更新的数据同步更新到数据库中
SqlCommandBuilder cmdBld = new SqlCommandBuilder(myDataAdapter);
myDataAdapter.Update(myDataSet, "student");

//输出修改后的表中的数据
Console.WriteLine("修改后的表:");
PrintValues(myDataSet);
Console.ReadKey();

return strsql;
}

private static void PrintValues(DataSet myDataSet)//输出表中的数据
{
foreach (DataTable table in myDataSet.Tables)
{
Console.WriteLine("表名称:" + table.TableName);
foreach (DataRow row in table.Rows)
{
foreach (DataColumn column in table.Columns)
{
Console.Write(row[column] + "  ");
}
Console.WriteLine();
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: