当前位置:文档之家› net数据库

net数据库

.net数据库Connection 对象提供与数据源的连接。

Command 对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。

DataReader 从数据源中提供高性能的数据流。

最后,DataAdapter 提供连接 DataSet 对象和数据源的桥梁。

DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对DataSet 中数据的更改与数据源保持一致。

DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及有关DataTable 对象中数据的主键、外键、约束和关系信息组成。

选择 DataReader 或 DataSet在决定应用程序应使用 DataReader(请参见使用 DataReader 检索数据)还是应使用DataSet(请参见在 中使用 DataSet)时,应考虑应用程序所需的功能类型。

DataSet 用于执行以下功能:∙在应用程序中将数据缓存在本地,以便可以对数据进行处理。

如果只需要读取查询结果,DataReader 是更好的选择。

∙在层间或从 XML Web 服务对数据进行远程处理。

∙与数据进行动态交互,例如绑定到 Windows 窗体控件或组合并关联来自多个源的数据。

∙对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使用。

如果不需要 DataSet 所提供的功能,则可以使用 DataReader 以只进、只读方式返回数据,从而提高应用程序的性能。

虽然 DataAdapter 使用 DataReader 来填充 DataSet 的内容(请参见从 DataAdapter 填充 DataSet),但可以使用 DataReader 来提高性能,因为这样可以节省 DataSet 所使用的内存,并将省去创建 DataSet 并填充其内容所需的处理。

.NET Framework 数据提供程序的核心对象下表概括了组成 .NET Framework 数据提供程序的四个核心对象。

对象说明Connection 建立与特定数据源(数据库)的连接。

所有 Connection 对象的基类均为DbConnection 类。

Command 对数据源执行命令。

公开 Parameters,并且可以通过 Connection 在Transaction 的范围内执行。

所有 Command 对象的基类均为 DbCommand 类。

DataReader 从数据源中读取只进且只读的数据流。

所有 DataReader 对象的基类均为DbDataReader 类。

该对象循环的向下一次一笔地读取数据,节省了网络资源,不需将所有数据通过网络一次全传回给应用程序。

DataAdapte r 用数据源填充 DataSet 并解析更新,在数据源以及DataSet只见执行数据传输工作。

它由4个Command对象组成,SelectCommand,InsertCommand,UpdateCommand,UpdateCommand,DeleteCom mand,所有 DataAdapter 对象的基类均为 DbDataAdapter 类。

这4个组件是负责建立年纪和数据操作部分,称为数据提供组件。

而DataSet是在内存中建立的类似数据库的结构,数据操作组件主要功能是作为DataSet与数据源之间的桥梁,负责将数据源中的数据取出后放入DataSet中,或是将DataSet中的数据存放回数据源。

1.创建打开连接SqlConnection myConnection = new SqlConnection();myConnection.ConnectionString = “ConnectionString”;or:string myString = “workstation id= gz6tgm ; packet size= 4096 ; user id= sa ; “data source = gzabc ;persist security info= True ; initial catalog=aspbook ; password= pass”;SqlConnection myConn = new SqlConnection(mystring);workstation id:连接服务器的及其名称,默认为本机名称packet size:指定每个网络数据包可用于与sql server通信的字节数user id:用以登录数据库服务器的sql server用户名password:登录数据库密码data source:要连接的数据库服务器名称initial catalog:要连接的数据库名称persist security info:防止敏感,如密码作为打开连接的一部分信息被返回打开连接:myConnection.open();关闭连接:myConnection.close()2.用Sqlcommand对象读取和更新数据Sqlcommand工作是通过Connection对象来对数据源执行命令以操作数据。

SqlConnection myConn=new SqlConnection("workstation id = gz6tgm ; packet size = 4096 ;user id = sa ; “data source = gzabc ; persist security info = True ; initial catalog =aspbook ;password = pass”);String sqlstring = “insert into student values(011170,’wyp’,1,23,’化21’);SqlCommand mycommand = new SqlCommand(sqlstring,myConnection);myConn.Open();mycommand.ExecuteNonQuery();myconn.close();公共属性:CommandType.StoredProcedure 表明CommandText中指定的是存储过程CommandType.Text 表明是执行数据操作的SQL语句(默认)CommandType.TableDirect 表明要访问的数据表名称ExecuteScalar()例:static public int AddProductCategory(string newName, string connString){Int32 newProdID = 0;string sql ="INSERT INTO Production.ProductCategory (Name) V ALUES (@Name); "+ "SELECT CAST(scope_identity() AS int)";using (SqlConnection conn = new SqlConnection(connString)){SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Add("@Name", SqlDbType.V arChar);cmd.Parameters["@name"].V alue = newName;try{conn.Open();newProdID = (Int32)cmd.ExecuteScalar();}catch (Exception ex){Console.WriteLine(ex.Message);}}return (int)newProdID;}3.使用参数myComm.Parameters.Add(“@Sno”,SqlDbRype.Int);SqlParameter myParam = new SqlParameter(“@Sname”,SqlDbType.V arChar,50)myComm.Parameters.Add(myParam);myComm.Parameters.Add(new SqlParameter(“@Sage”,SqlDbType.SmallInt));例:SqlConnection myConn=new SqlConnection("user id=sa;data source= WYP\\WYP;initialcatalog=aspbook;password=");string SqlString="Insert into Student1 values(@Sno,@Sname,@Ssex,@Sage,@Sclass)"; //带有参数的SqlCommand myComm=new SqlCommand(SqlString,myConn); //创建命令SqlParameter noPara=new SqlParameter("@Sno",SqlDbType.Int); //定义参数及参数的类型SqlParameter namePara=new SqlParameter("@Sname",SqlDbType.VarChar,50); //定义参数、数据类型,及长度SqlParameter sexPara=new SqlParameter("@Ssex",SqlDbType.Bit); //定义参数,为布尔型SqlParameter agePara=new SqlParameter("@Sage",SqlDbType.SmallInt);SqlParameter classPara=new SqlParameter("@Sclass",SqlDbType.VarChar,50);myComm.Parameters.Add(noPara); //添加参数到命令对象的参数集合中myComm.Parameters.Add(namePara);myComm.Parameters.Add(sexPara);myComm.Parameters.Add(agePara);myComm.Parameters.Add(classPara);noPara.Value=Int32.Parse(NoBox.Text); //设置参数值namePara.Value=NameBox.Text; //设置姓名参数值if(MaleRadio.Checked==true) sexPara.Value=true; //判定姓名,并设置参数值else sexPara.Value=false;agePara.Value=Int16.Parse(AgeBox.Text);classPara.Value=ClassBox.Text;myConn.Open(); //打开连接,与数据库联机try{myComm.ExecuteNonQuery(); //使用ExecuteNonQuery()方法来执行插入操作MessageLabel.Text="资料已经添加到数据库,注册成功!";//如果操作成功,显示成功信息MessageLabel.Visible=true;}catch(Exception excp) {System.Diagnostics.Debug.WriteLine(excp.Message);MessageLabel.Text="资料添加失败,请检验数据库连接"; /MessageLabel.Visible=true;}myConn.Close();4.使用存储过程SqlConnection myConn=new SqlConnection("user id=sa;data source=localhost;initialcatalog=aspbook;password=");SqlCommand myComm=new SqlCommand(); //创建命令对象myComm.Connection=myConn; //设置命令依赖的连接mandType=CommandType.StoredProcedure; //设置命令执行的内容为存储过程mandText="InsertStudent"; //设置调用的存储过程myComm.Parameters.Add("@Sno",SqlDbType.Int); //添加参数,并设置参数的数据类型myComm.Parameters.Add("@Sname",SqlDbType.VarChar,50);myComm.Parameters.Add("@Ssex",SqlDbType.Bit);myComm.Parameters.Add(new SqlParameter("@Sage",SqlDbType.SmallInt)); //添加参数方式二myComm.Parameters.Add(new SqlParameter("@Sclass",SqlDbType.VarChar,50));myComm.Parameters["@Sno"].Value=Int32.Parse(NoBox.Text); //利用索引来为参数赋值myComm.Parameters["@Sname"].Value=NameBox.Text; //赋值给名字参数if(MaleRadio.Checked==true) //为性别赋值myComm.Parameters["@Ssex"].Value=true;elsemyComm.Parameters["@Ssex"].Value=false;myComm.Parameters["@Sage"].Value=Int16.Parse(AgeBox.Text);myComm.Parameters["@Sclass"].Value=ClassBox.Text;myConn.Open(); //打开连接try{myComm.ExecuteNonQuery(); //使用ExecuteNonQuery()方法来执行插入操作MessageLabel.Text="资料已经添加到数据库,注册成功!"; //如果操作成功,显示成功信息MessageLabel.Visible=true;}catch(Exception excp) //捕捉异常{System.Diagnostics.Debug.WriteLine(excp.Message); //如果插入失败,显示失败信息MessageLabel.Text="资料添加失败,请检验数据库连接"; //在页面上显示失败信息MessageLabel.Visible=true;}myConn.Close();SqlDataReader 类提供一种从 SQL Server 数据库读取行的只进流的方式。

相关主题