1、第 1 页 共 7 页期末考试卷(B)(时间:120 分钟)年级课号课程名称数据库访问技术 卷页_考试方式闭卷 专业班级学生姓名_ _ 学号_ _ _成绩_ _注意:所有解答都做在答卷纸上,并请写清学号、姓名和有关题号。一、单选题(每空 1 分,共 30 分)1. 在 ADO.NET 中,为访问 DataTable 对象从数据源提取的数据行。可使用 DataTable 对象的_ 属性。 A Rows B Columns C Constraints D DataSet 2. 为了在程序中使用 ODBC .NET 数据提供程序,应在源程序工程中添加对程序集_ 的引用。 A. System.Data
2、.dll B. System.Data.SQL.dll C. System.Data.OleDb.dll D. System.Data.Odbc.dll 3. 参考下列 C#语句: SqlConnection Conn1 = new SqlConnection( ); Conn1.ConnectionString = “Integrated Security=SSPI; Initial Catalog=northwind“; Conn1.Open( ); SqlConnection Conn2 = new SqlConnection( );Conn2.ConnectionString = “I
3、nitial Catalog=northwind; IntegratedSecurity=SSPI“; Conn2.Open( ); 请问:上述语句将创建_个连接池来管理这些 SqlConnection 对象?A1 B2 C0 4. 打开 SQL Connection 时返回的 SQL Server 错误号为 4 060,该错误表示: A. 连接字符串指定的服务器名称无效 B. 连接字符串指定的数据库名称无效 C. 连接超时 D. 连接字符串指定的用户名或密码错误 5. 为创建在 SQL Server 2000 中执行 Select 语句的 Command 对象,可先建立到 SQL Serve
4、r 2000 数据库的连接,然后使用连接对象的_方法创建 SqlCommand 对象。 A. Open B. OpenSQL C. CreateCommand D. CreateSQL 6. 变量名为 conn 的 SqlConnection 对象连接到本地 SQL Server 2000 的 Northwind 实例。该实例中包含表 Orders。为了从 Orders 表查询所有 CustomerID 等于“tom ” 的订单数据,请用正确的字符串 sqlstr 的赋值语句替换下列第一行语句。 string sqlstr=“本字符串需要你用正确的 SQL 语句替换“: conn.Open()
5、;SqlCommand cmd = conn.CreateCommand();cmd.CommandText = sqlstr;cmd.CommandType = CommandType.Text;SqlParameter p1 = cmd.Parameters.Add(“CustomerID“,SqlDbType.VarChar,5);p1.Value = “tom“; SqlDataReader dr = cmd.ExecuteReader();A. string sqlstr=“Select * From Orders where CustomerID=?“;B. string sqls
6、tr=“Select * From Orders where CustomerID=CustomerID “; C. string sqlstr=“Select * From Orders where CustomerID=CustomerID “;D. string sqlstr=“Select * From Orders“; 7. Oracle 数据库实例 MyOra1 中存储过程 CountProductsInCategory 的定义如下(过程体略): 第 2 页 共 7 页CREATE FUNCTION CountProductsInCategory(catID in number,c
7、atName varchar2 out) RETURN int AS ProdCount number; BEGIN RETURN ProdCount; END CountProductsInCategory; 使用 OLE DB .NET 数据提供程序的 OleDbCommand 对象访问该存储过程前,为了添加足够的参数,可以_。 1. OleDbParameter p2 = new OleDbParameter(“CatID“,OleDbType.Int,4);p1.Direction = ParameterDirection.Input;cmd.Parameters.Add(p2);2.
8、 OleDbParameter p3 = new OleDbParameter(“CatName“,OleDbType.VarWChar,15); p1.Direction = ParameterDirection.Output; cmd.Parameters.Add(p3); 3. OleDbParameter p1 = new OleDbParameter(“RETURN_VALUE“,OleDbType.Int,4); p1.Direction = ParameterDirection.ReturnValue; cmd.Parameters.Add(p1); A. 依次执行语句 1、2、
9、3 B. 依次执行语句 2、3、1 C. 依次执行语句 3、2、1 D. 依次执行语句 3、1、2 8. cmd 是一个 SqlCommand 类型的对象,并已正确连接到数据库 MyDB。为了遍历完SqlDataReader 对象的所有数据行后立即自动释放 cmd 使用的连接对象,应采用下列哪种方法调用ExecuteReader 方法? A. SqlDataReader dr = cmd.ExecuteReader( ); B. SqlDataReader dr = cmd.ExecuteReader(true); C. SqlDataReader dr = cmd.ExecuteReader
10、(0); D. SqlDataReader dr= cmd.ExecuteReader(CommandBehavior.CloseConnection); 9. 为了在程序中使用 DataSet 类定义数据集对象,应在文件开始处添加对命名空间_的引用。 A. System.IO B. System.Utils C. System.Data D. System.DataBase 10. 已知 ds1、ds2 分别代表两个不同的 DataSet 对象。其中 ds1 已包含名为“Customer”的DataTable 对象,且该 DataTable 对象被变量 dt_Customer 引用。已知 d
11、t_Customer 表中有 100 条记录,则执行下列语句后,新的数据表 new_dt_Customer 中包含_条记录。 DataTable new_dt_Customer = dt_Customer.Copy(); A. 0 B. 100 C. 200 D. 300 11. dt 为 DataTable 类型的变量,引用名为“Customers“的 DataTable 对象。该表中包含“CustomerID“、“CustomerName“ 、“Address“ 、“Telephone“ 等 4 列。将数据列“CustomerID“设为该表的主键的正确语句有: A. dt.PrimaryK
12、ey = “CustomerID“;B. dt.PrimaryKey = new DataColumndt.Columns“CustomerID“; C. dt.PrimaryKey = new object“CustomerID“; D.dt.PrimaryKey.Add(“CustomerID“);12. 已知 ds 为数据集对象。以下语句的作用是_。 ds.Tables“Product“.Constraints.Add( new UniqueConstraint(“UC_ProductName“,new string“Name“,“Class“,true); A. 为表“Product“
13、添加一个由列“Name“,“Class“组合成的主键约束 B. 为表“Product“添加一个由列“Name“,“Class“ 组合成的唯一性约束 C. 为数据集 ds 添加一个名为 “Product“的数据表,并添加两个列,列名分别为“Name“ 和“Class“ D. 为数据集 ds 添加一个名为“Product“的数据表,并添加一个名为“UC_ProductName“ 的数据列 13 数据集 ds 中两数据表(父表:Customer;子表:CartItems) 之间有如图外键约束。 父表Customers 中有一行数据的 Cu stomerID=100,子表 CartItems 中有 2
14、0 行数据的 CustomerID=100。若从父表中删除该行,则: A. 子表不发生任何变化 B. 子表中 20 个相关行的 CustomerID 列的值变为 DBNull C. 子表中 20 个相关行被删除 D. 引发 Exception 14. 数据集对象 dsNorthwind 包含两个表,表名分别为“Customers“和“Orders“。执行下列语句: dsNorthwind.Relations.Add( 第 3 页 共 7 页“FK_CustomersOrders“, dsNorthwind.Tables“Customers“.Columns“CustomerID“, dsNor
15、thwind.Tables“Orders“.Columns“CustomerID“, false); 该语句运行结果有_。 A. 为 dsNorthwind 创建了表“Cus tomers“和“Orders“ 之间的导航关系 B. 为表“Customers“创建了一个唯一性约束 C. 为表“Orders“ 创建了一个唯一性约束 D. 为表“Customers“创建了一个外键约束,其父表为“Orders“ E. 为表“Orders“ 创建了一个外键约束,其父表为 “Customers“ 15. DataSet 对象 ds 中,数据表对象 Customers 的表名为“Customers“ ,其表
16、结构如下: 列名 类型 列序号 CustomerID int 0 CompanyName string 1 Address string 2 City string 3 该表有 300 条记录,其中有一些刚刚被标记为删除。我们希望从表中查找所有已经标记为删除的、来自 London 的客户信息,并将结果以 City 列递减排序放入一个 DataRow 数组中。则执行下列_语句可以完成此目标。 ADataRow selRows = Customers.Select(“City = London“, “City DESC“, DataRowState.Deleted); BDataRow selRo
17、ws = Customers.Select(“City = London“, “City DESC“, DataViewRowState.Deleted); CDataRow selRows = Customers.Select(“City = London“, “City ASC“, DataRowState.Deleted); DDataRow selRows = Customers.Select(“City = London“, “City ASC“, DataViewRowState.Deleted); 16. 在某 XSD 文件中,有以下代码片断: 其中,标记的作用是:A. 元素“类
18、别_ID”的值是递增的 B. 要求“类别”元素下的两个子元素必须以指定的顺序出现。C. “类别”元素下的两个子元素是可选的 D. “类别”元素下的两个子元素都必须出现 17. Dataset1 为一数据集对象,语句Dataset1.ReadXml(“F:/Dataset1.XML“,XmlReadMode.ReadSchema); 的作用是: A.若 Dataset1 已经包含架构,则将所有由 XML 文件内部架构定义的新表加入 Dataset1, 然后向Dataset1 加载数据; B. 向 Dataset1 加载数据;忽略所有 XML 文件内部架构,并丢弃所有与 Dataset1 现有架构
19、不匹配的数据。 C. 忽略所有 XML 文件内部架构而根据 XML 数据推断出新的架构。添加到 Dataset1; 然后向Dataset1 加载数据。D. 从 XML 文件读取数据集数据修改信息,将其合并到 Dataset1 中。 18. 为了只把 DataSet 对象 MyDS 的数据修改情况写入文件 “F:/ MyDS.XML“中,以备在网络可用时更新到数据库中,可执行 A. MyDS.WriteXmlSchema(“F:/MyDS.XSD“); B. string MyDSSchema = MyDS.GetXml(); C. MyDS.WriteXml(“F:/MyDS.XSD“,Xml
20、WriteMode.WriteSchema); D. MyDS.WriteXml(“F:/MyDS.XSD“,XmlWriteMode.IgnoreSchema); E. MyDS.WriteXml(“F:/MyDS.XSD“,XmlWriteMode.DiffGram); 19. DataAdapter 对象使用与_属性关联的 Command 对象将 DataSet 修改的数据保存入数据源。第 4 页 共 7 页A. SelectCommand B. InsertCommand C. UpdateCommand D. DeleteCommand 20. 在使用 DataAdapter 作为从
21、数据源到 DataSet 的通道时,可能遇到数据源和 DataSet 架构不匹配的情况。DataAdapter 使用_对象处理该情况。 A. UpdateCommand B. DataBindings C. TableMappings D. XSD 架构文件21. 已知有如下变量: string strConn1 = “Provider=SQLOLEDB;Data Source=(local)NetSDK;”+“Initial Catalog=Northwind”; string strConn2 = “Data Source=(local)NetSDK;”+“Initial Catalog=
22、Northwind;Provider=SQLOLEDB”;string strSql1 = “SELECT * FROM Customers”;string strSql2 = “SELECT * FROM Orders”;有下列 3 组语句: 1. OleDbDataAdapter da1 = new OleDbDataAdapter(strSql1,strConn1);OleDbDataAdapter da2 = new OleDbDataAdapter(strSql2,strConn1);调用 da1、da2 将数据下载到数据集 2. OleDbDataAdapter da1 = new
23、 OleDbDataAdapter(strSql1,strConn1);OleDbDataAdapter da2 = new OleDbDataAdapter(strSql2,strConn2);调用 da1、da2 将数据下载到数据集 3. OleDbConnection conn = new OleDbConnection(strConn1);OleDbDataAdapter da1 = new OleDbDataAdapter(strSql1,conn);OleDbDataAdapter da2 = new OleDbDataAdapter(strSql2,conn);调用 da1、da
24、2 将数据下载到数据集 则执行效率最低的一组语句是_。 A. 1 B. 2 C. 3 D. 都一样 22. 为了提高性能,在使用 DataAdapter 填充 DataSet 前,可以将_ _属性值设为 false. A. DataSet 对象的 EnforceConstraints B. DataSet 对象的 CaseSensitive C. DataAdapter 对象的 AcceptChangesDuringFill D. DataAdapter 对象的 MissingSchemaAction 23. 为了控制 DataAdapter 的 Fill 方法如何在填充数据之前向 DataS
25、et 加载数据源架构信息,可在调用该方法前,将 DataAdapter 的 MissingSchemaAction 属性设为_,使得 Fill 方法在填充数据前,向 DataSet 架构添加额外的表和列,并且给 DataTable 添加主键信息。 A. Add B. AddWithKey C. Error D. Ignore 24. da 为 DataAdapter 对象,其 SeclectCommand 的查询字符串为: Select * From Customers da 的 TableMappings 集合中包含一个 DataTableMapping 对象,如下代码所示: DataTab
26、leMapping dcm=da.TableMappings.Add(“Customers“,“dtCustomers“); dcm.ColumnMappings.Add(“CustomerID“,“dtCustomerID“); dcm.ColumnMappings.Add(“CustomerName“,“dtCustomerName“); dcm.ColumnMappings.Add(“Address“,“dtAddress“); 数据集 ds 中已包含一个名为 dtCustomers 的数据表,该表包含 3 个数据列,列名分别为dtCustomerID、dtCusto merName、d
27、tAddress ; 另一方面,数据库中包含一个名为 Customers 的数据表,该表包含 3 个数据列,列名分别为 CustomerID、CustomerName 、Address 。 请问,若调用以下代码结果如何?da.FillSchema(ds,SchemaType.Source,“Customers“); A. 目标数据集中包含 1 个数据表,表名 “Customers“ B. 目标数据集中包含 1 个数据表,表名 “dtCustomers“ C. 目标数据集中包含 1 个数据表,表名 “Table“ D. 目标数据集中包含 2 个数据表,表名 “Customers“、“dtCust
28、omers“ E. 目标数据集中包含 2 个数据表,表名“Table“、“dtCustomers“ F. 发异常 25. 在 DataSet 中,若修改某一 DataRow 对象的任何一列的值,该行的 DataRowState 属性的值将变为 _。 A. DataRowState.Added B. DataRowState.Deleted C. DataRowState.Detached D. DataRowState.Modified 26. DataAdapter 对象的 DeleteCommand 的属性值为 null,将造成:A. 程序编译错误 第 5 页 共 7 页B. DataAd
29、apter 在处理 DataSet 中被删除的行时,这些行将被跳过不处理 C. DataAdapter 在处理 DataSet 中被删除的行时,将引发异常 D. DataAdapter 在处理 DataSet 中被删除的行时,将出现对话框询问用户如何处理该行 27 数据库 F:BooksMgt.mdb 包含表 Book。创建名为 conn 数据连接对象定义如下: OleDbConnection conn = new OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=F:BooksMgt.mdb“); 请问下列 C#语句是否
30、正确? OleDbCommand cmd = conn.CreateCommand(); cmd.CommandText = “Select * From Book“; cmd.CommandType = CommandType.Text; A.正确 B.错误28 DataSet 对象 ds 中,数据表对象 Customers 的表名为“Customers“ ,其表结构如下: 列名 类型 列序号 CustomerID int 0 CompanyName string 1 Address string 2 City string 3 则可以使用下列语句向该表添加一行新数据。 object row
31、 = “ATA“,“A8“,“Beijing“,1;ds.Tables“Customers“.Rows.Add(row); A.可以 B.不可以29. 在 ADO.NET 编程中,能否使用一个 DataAdapter 对象向多个 DataTable 填充数据?A.可以 B.不可以30. DataAdapter 对象的 Update 查询语句中, 使用下列哪种 Where 子句不能保证本行的更新不会覆盖其他用户的更改。 A. 包含数据源所有的列 B. 只包含主键列 C. 包含主键列和一个时戳列 D. 包含主键列和已修改列 二、多选题(每题 2 分,共 30 分)1. ADO.NET 模型中的下列
32、哪些对象属于 Connected 对象? A. Connection B. DataAdapter C. DataReader D. DataSet 2. 在 ADO.NET 中使用 XML 支持时,以下哪些建议是可取的? A 从 DataSet 读取 XML 格式的数据 B 使用 XML 格式的数据填充 DataSet C 为 DataSet 创建 XML 格式的构架描述 D 将数据以 XML 格式保存在数据库中 3. 目前,Microsoft .NET Framework 的发行包中包含以下 .NET 数据提供程序。 A. SQL Server .NET 数据提供程序 B. OLE DB
33、.NET 数据提供程序 C. ODBC .NET 数据提供程序 D. XML .NET 数据提供程序 4. 为访问 Microsoft Access 2000 数据库中的数据,可以使用以下哪种.NET 数据提供者连接到数据库?A. SQL Server .NET 数据提供程序 B. OLE DB .NET 数据提供程序 C. ODBC .NET 数据提供程序 D. XML .NET 数据提供程序 5. 在 Visual Studio .NET 的服务器资源管理器中,下列哪些是可见的服务项目? A. 数据连接 B. 网络连接 C. 事件日志服务 D. 设备管理器 6. 设计 ADO.NET 应用
34、程序时,在下列哪些情况下,使用 Command 对象直接访问数据源更加有效?A 使用 ADO.NET 对 XML 数据文件中的数据进行分析和处理 B 在 SQL Server 数据库的表中搜索某个字段值 C 计算 SQL Server 数据库中数据表的行数 D 在 SQL Server 数据库中创建存储过程 7. 某 Command 对象 cmd 将被用来执行以下 SQL 语句,以向数据源中插入新记录: insert into Customers values(1000,“tom”) 。请问,语句 cmd.ExecuteNo nQuery( );的返回值可能为 A. 0 B. 1 C. 100
35、0 D. “tom” 8. 使用 SQL Server .NET 数据提供程序访问 SQl Server 2000 数据库时,我们创建了事务对象第 6 页 共 7 页trans,并将其 IsolationLevel 属性设置为 Serializab le,则在该事务中执行 Command 对象的方法_。 A. 可以防止在读取时破坏数据 B. 可以防止脏读 C. 可以防止不可重复读 D. 可以防止幻象读取 9. 下列哪些选项可以作为 DataSet 的数据源? A. SQL Server 2000 数据库中的视图 B. Oracle 数据库中的表 C. XML 文件 D. Excel 制表文件
36、10. 下列哪些方法可以在 DataSet 对象 ds 中添加一个名为“Customers”的 DataTable 对象? A. DataTable dt_customers = new DataTable(); B. DataTable dt_customers = new DataTable(“Customers“);ds.Tables.Add(dt_customers); C. ds.Tables.Add(“Customers“); D. ds.Tables.Add(new DataTable(“Customers“); 11. 已知变量 ds 引用某个 DataSet 对象,该 Dat
37、aSet 对象中已包含一个表名为“table1“的数据表。在 Windows 窗体 Form1 中,为了将变量名为 dataGrid1 的 DataGrid 控件绑定到数据表“table1“,可以使用代码_。 A. dataGrid1.DataSource = ds;dataGrid1.DataMember = ds.Tables“table1“; B. dataGrid1.DataMember = ds; C. dataGrid1.DataSource = new DataView(ds.Tables“table1“); D. dataGrid1.DataSource = ds.Tables
38、“table1“; dataGrid1.DataMember = ds;12. DataView 对象的特性有: A. DataView 只能访问单个 DataTable 表 B. DataView 可以作为连接两个相关表的手段 C. DataView 不能进行排序 D. DataView 可以根据记录的版本、状态进行筛选 13 一般情况下,我们可以从代表 DataSet 数据的 XML 文件中推断出 DataSet 的架构。然而,我们需要使用 XSD 架构的原因有: A. 避免从 XML 文件推断 DataSet 架构造成的额外开销 B. 推断出的架构无法达到与 XSD 架构同等的细节水平
39、C. XML 文件不是良构的,而 XSD 文件是良构的 D. 从 XML 推断 DataSet 架构是非法的 14. 目前在 ADO.NET 中可以使用与下列哪些数据源相关的 DataAdapter? A. SQL Server .NET 数据源 B. OLE DB .NET 数据源 C. XML 文件 D. ODBC .NET 数据源 15. myDataSet 是一数据集对象,其中包含通过 DataAdapter 从数据库检索的构架和数据。在本地对 myDataSet 进行修改后,调用下列语句 DataSet changes = myDataSet.GetChanges();获得的新的数据
40、集 changes 将包含原数据集中状态为_的数据行。 A. Added B. Deleted C. Detached D. Modified E. Unchanged 三、分析解答题(每题 4 分,共 40 分)1.ADO.NET 的核心组件有哪些?这些核心组件的任务分别是什么?2. Connection 对象的作用是什么?3.Connection 中常用的有哪些事件?4.数据库连接对象的 Close 方法和 Dispose 方法有什么区别?5.什么是连接环境?什么是非连接环境?各自有什么优缺点?6.ForeignKeyConstraint 的四个可能的约束规则是什么?7.Delete 和
41、Remove 方法有什么不同?8.如何确定哪个方法搜索 DataTable 中的数据?9.你正在创建调用 Web 服务的客户端应用程序。在调用 Web 方法返回 DataSet 前必须做什么?10.从 XML 文档中的数据创建 XSD 架构,但文档不包含内联架构,也不存在外部 XSD 文档,使用Visual Studio.NET 的哪些方法才可以生成架构?第 7 页 共 7 页答卷纸年级课号课程名称数据库访问技术 卷页_考试方式闭卷 专业班级学生姓名_ _ 学号_ _ _成绩_ _一、单选题(每空 1 分,共 30 分)123456789101112131415161718192021222324252627282930二、多选题(每题 2 分,共 30 分)123456789101112131415三、分析解答题(每题 4 分,共 40 分)