Errata for MCTS Self-Paced Training Kit (Exam 70-561): Microsoft® .NET Framework 3.5—ADO.NET Application Development
Submit your own errata for this product.
The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question Note Update
| Version |
Location |
Description |
Submitted By |
Date Submitted |
Date Corrected |
| Printed |
Page CD-ROM
|
Practice Test question scored incorrectly
In the practice exam included on the Companion CD, one of the questions is scored incorrectly.
The question reads:
"You create a DbCommand to execute a query. You must retrieve a DBDataReader that you can use to access the result set.
What should you do?"
The answer that should be marked correct reads:
"Use the DbCommand.ExecuteDbDataReader method to execute the command text against the connection and return a DbDataReader."
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page xix
|
"Next, Previous, and Go To" should be "Next and Previous"
On page xix, the last sentence is incorrect.
Change:
"To take the test, answer the questions and use the Next, Previous, and Go To buttons to move from question to question."
To:
"To take the test, answer the questions and use the Next and Previous buttons to move from question to question."
|
Microsoft Press |
Jul 13, 2010 |
|
| Other Digital Version |
CD-ROM
|
Practice Test question scored incorrectly
In the practice exam included on the Companion CD, one of the questions is scored incorrectly.
The question reads:
"You use two DataContext instances to retrieve objects from two database tables. After modifying the returned objects, you call the SubmitChanges method on each instance of DataContext. You want changes to both databases to occur in the context of a single distributed transaction."
The answer that should be marked correct reads:
"Embed calls to the SubmitChanges method within a TransactionScope with TransactionScopeOption set to RequiredNew. Call Complete after the update."
|
Microsoft Press |
May 06, 2010 |
|
| Other Digital Version |
CD-ROM
|
Unable to answer practice test question
In the practice exam, one of the questions includes instructions to select options from a list, but the list does not exist.
The question begins:
"You are designing an occasionally connected smart client."
This question cannot be answered or scored as it is.
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 17
|
"File, New, New File" should be "Project, Add New Item"
On page 17, the last sentence is incorrect.
Change:
"You can also select File, New, New File from the menu bar, and choose the confi g fi le type from the window shown in Figure 1-3."
To:
"You can also select Project, Add New Item from the menu bar, and choose the confi g fi le type from the window shown in Figure 1-3."
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 44
|
SQL queries are incorrect
On page 44, the SQL queries used in the code sample are incorrect.
Change:
theTransaction = theConnection.BeginTransaction("myFirstTransaction")
Dim theCommand As SqlCommand = New SqlCommand()
theCommand.CommandText = "SELECT top 10 * FROM game"
theCommand.CommandType = CommandType.Text
theCommand.Transaction = theTransaction
theCommand.Connection = theConnection
theCommand.ExecuteNonQuery()
Console.WriteLine("First command executed successfully.")
Dim theSecondCommand As SqlCommand = New SqlCommand()
theSecondCommand.CommandText = "SELECT top 10 * FROM accessory"To:
theTransaction = theConnection.BeginTransaction("myFirstTransaction")
Dim theCommand As SqlCommand = New SqlCommand()
theCommand.CommandText = "UPDATE product SET listprice = 59.99
WHERE productid = 2020"
theCommand.CommandType = CommandType.Text
theCommand.Transaction = theTransaction
theCommand.Connection = theConnection
theCommand.ExecuteNonQuery()
Console.WriteLine("First command executed successfully.")
Dim theSecondCommand As SqlCommand = New SqlCommand()
theSecondCommand.CommandText =
"INSERT INTO product (ProductName, ProductDescription, ListPrice,
ProductTypeID, ReleaseDate, ListPriceCurrency) " +
"VALUES ('Super Fight 2', 'The sequel to the #1 XBox 360 game
that never was', 59.99, 1, '2008-11-01', 'USD')"
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 51
|
"Initial Catalog" should be "InitialCatalog"
On page 51, the connection strings used in answer B are incorrect.
Change:
Dim theConnectionString As String = "Data Source=jim-pc;Initial Catalog=VideoGameStoreDB;Integrated Security=SSPI;"To:
Dim theConnectionString As String = "Data Source=jim-pc;InitialCatalog=VideoGameStoreDB;Integrated Security=SSPI;""
Change:
"string theConnectionString = "Data Source=jim-pc;Initial
Catalog=VideoGameStoreDB;Integrated Security=SSPI;";
To:
"string theConnectionString = "Data Source=jim-pc;InitialCatalog=VideoGameStoreDB;Integrated Security=SSPI;";
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 54
|
Server should be System
On page 54, the second sentence of the first paragraph is incorrect.
Change:
"This is a smart move—Microsoft supplies a number of different data providers, including the native provider for SQL Server, but third parties can supply their own (for example, when using the Oracle Relational Database Management Server (RDBMS)) or a custom data provider can be written by any competent developer."
To:
"This is a smart move—Microsoft supplies a number of different data providers, including the native provider for SQL Server, but third parties can supply their own (for example, when using the Oracle Relational Database Management System (RDBMS)) or a custom data provider can be written by any competent developer."
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 96
|
SqlCommand should be SqlParameterCollection
On Page 96, the sentence before the bulleted list is incorrect.
Change:
"In addition, the SqlCommand object has an overloaded Add method, which can be used to add parameters with and without a direct reference to a SqlParameter, as shown in the following list:"
To:
"In addition, the SqlParameterCollection object has an overloaded Add method, which can be used to add parameters with and without a direct reference to a SqlParameter, as shown in the following list:"
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 103
|
"LEFT INNER JOIN" should be "INNER JOIN"
On page 103, the second line of answer A to question 2 is incorrect.
Change:
FROM product p LEFT INNER JOIN productType pt on pt.ProductTypeID =To:
FROM product p INNER JOIN productType pt on pt.ProductTypeID =
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 113
|
"Asynchronous Prossessing=true" missing from code sample
On page 113, the 5th line of the C# code sample is missing a parameter.
Change:
Security=SSPI;";To:
Security=SSPI;Asynchronous Prossessing=true;";
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 138
|
PROPERTY should be METHOD
On page 138, the title of the first column in Table 3-2 is incorrect.
Change:
"PROPERTY"
To:
"METHOD"
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 143
|
DataSet should be DataTable
On page 143, the Description of RejectChanges in Table 3-4 is incorrect.
Change:
"Rolls back all the changes to the data in the DataSet, similar to a rollback at database level except this is done to the in-memory data."
To:
"Rolls back all the changes to the data in the DataTable, similar to a rollback at database level except this is done to the in-memory data."
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 143
|
PROPERTY should be METHOD
On page 143, the title of the first column in Table 3-4 is incorrect.
Change:
"PROPERTY"
To:
"METHOD"
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 146
|
GetProducts should be GetProductRows
On page 146, the last sentence of the second paragraph is incorrect.
Change:
"The SupplierRow offers a method named GetProducts, which returns an array of ProductRow objects."
To:
"The SupplierRow offers a method named GetProductRows, which returns an array of ProductRow objects."
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 147
|
Incorrect description of sample code
On page 147, the paragraph after the code sample is incorrect.
Change:
"In the previous code, the BuildDataSetWithRelation method creates two tables, adds them to the DataSet, and then proceeds to build a DataRelation between the two tables, from the ContactType fi eld in Contact to the primary key in the ContactTypes table. By enabling constraints when creating the relationship, the foreign key constraint is automatically implemented. Adding data that holds a reference to a non-existing entry in the ContactTypes table will cause an exception to be thrown. Adding the ContactTypes entry before adding the Contact works fine."
To:
"In the previous code, the BuildDataSetWithRelation method creates two tables, adds them to the DataSet, and then proceeds to build a DataRelation between the two tables, from the SupplierID field in Product to the primary key in the Supplier table. By enabling constraints when creating the relationship, the foreign key constraint is automatically implemented. Adding data that holds a reference to a non-existing entry in the Supplier table will cause an exception to be thrown. Adding the Supplier entry before adding the Product works fine."
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 148
|
Incorrect tables and columns referenced in code sample explanation
On page 148, the first paragraph and following code sample are incorrect.
Change:
For example, the following code sets the expression for the OrderLinesCount column of the Orders table:
' VB
Tables("Suppliers").Columns("ProductCount").Expression = "Count(Child(Product))"
// C#
Tables["Suppliers "].Columns["Product Count"].Expression = "Count(Child(Product))";To:
For example, the following code sets the expression for the ProductCount column of the Suppliers table:
' VB
Tables("Suppliers").Columns("ProductCount").Expression = "Count(Child(Product))"
// C#
Tables["Suppliers"].Columns["ProductCount"].Expression = "Count(Child(Product))";
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 175
|
SupplierLocation should be SupplierAddress
On page 175, step 6 refers to an incorrect field.
Change:
"6. In the wizard, when entering the SQL statement, select all fi elds except the SupplierLocation field."
To:
"6. In the wizard, when entering the SQL statement, select all fi elds except the SupplierAddress field."
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 206
|
BatchUpdateSize should be UpdateBatchSize
On page 206, the first sentence of step 2 is incorrect.
Change:
"CustomerTableAdapter does not expose the BatchUpdateSize property because this is a SqlDataAdapter-specifi c property."
To:
"CustomerTableAdapter does not expose the UpdateBatchSize property because this is a SqlDataAdapter-specifi c property."
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 214
|
Incorrect column names used
On page 214, the third paragraph is incorrect.
Change:
"The code shown in Listing 4-2 shows how to create a relationship between two tables. The foreign key constraint is enabled, so only existing values for the ContactType fi eld are allowed. It shows that the BuildDataSetWithRelation method creates two tables, adds them to the DataSet and then proceeds to build a DataRelation between the two tables. The relationship connects the ContactType fi eld in Contact to the primary key in the ContactTypes table. By enabling constraints when creating the relationship, the foreign key constraint is automatically implemented, and adding data that holds a reference to a nonexisting ContactTypes entry causes an exception to be thrown. The correct implementation would be to add the ContactTypes entry before adding the Contact entry."
To:
"The code shown in Listing 4-2 shows how to create a relationship between two tables. The foreign key constraint is enabled, so only existing values for the SupplierID field are allowed. It shows that the BuildDataSetWithRelation method creates two tables, adds them to the DataSet and then proceeds to build a DataRelation between the two tables. The relationship connects the SupplierID field in Product to the primary key in the Supplier table. By enabling constraints when creating the relationship, the foreign key constraint is automatically implemented, and adding data that holds a reference to a nonexisting Supplier entry causes an exception to be thrown. The correct implementation would be to add the Supplier entry before adding the Product entry."
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 219
|
4-3 should be 4-4
On page 219, the last sentence before Table 4-4 is incorrect.
Change:
"See Table 4-3 for a list of transaction scope options."
To:
"See Table 4-4 for a list of transaction scope options."
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 223
|
Products should be Product
On page 223, step 4 is incorrect.
Change:
"Drag the Products table onto the design surface."
To:
"Drag the Product table onto the design surface."
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 224
|
“FillBySupplierID and GetDataBySupplierID.” should be “FillBySupplierID.”
On page 224, steps 8.b. and 9.b. are incorrect.
Change:
"Name the query "FillBySupplierID and GetDataBySupplierID.""
To:
"Name the query "FillBySupplierID.""
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 224
|
Incorrect instruction in step 5
On page 224, the second sentence of step 5 is incorrect.
Change:
"In the wizard, when entering the SQL statement, select all fields except the SupplierLocation field."
To:
"In the wizard, when entering the SQL statement, select all fields."
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 230
|
scope.Commit() missing from code sample
On page 230, an additional line is needed in the code sample.
Change:
Using scope As New TransactionScope()
SaveCustomer(ds)
SavePurchase(ds)
End UsingTo:
Using scope As New TransactionScope()
SaveCustomer(ds)
SavePurchase(ds)
scope.Commit()
End Using
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 292-294
|
Multiple entries should be removed from Table 6-1
On pages 292-294, the following rows should be removed from Table 6-1:
Join
SelectMany
ThenBy
ThenByDescending
ToDictionary
ToLookup
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 299
|
Incorrect description of step 3
On page 299, the descript ion of step 3 is incorrect.
Change:
"Inside the Main method, create an instance of the GameList class called games. Also, add a reference to the GameList namespace to the top of the file, as shown here:"
To:"Create a query to retrieve the games:"
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 321
|
Systen.Environment should be System.Diagnostics
On page 321, the second sentence of Practice 1 is incorrect.
Change:
"Use LINQ to query the process list that is returned by System.Environment’s Process class."
To:
"Use LINQ to query the process list that is returned by System.Diagnostics’s Process class."
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 330
|
"XmlReadMode.Ignore schema" should be "XmlReadMode.ReadSchema"
On page 330, the last sentence is incorrect.
Change:
"Alternatively, you can use XML schema to define the layout and only use XmlReadMode.Ignore schema as you’ll see in the next section."
To:
"Alternatively, you can use XML schema to define the layout and only use XmlReadMode.ReadSchema as you’ll see in the next section."
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 364
|
VideoGameStoreDB should be VideoGameStoreDBContext
On page 364, the second sentence of the "DataContext" section is incorrect.
Change:
"VideoGameStoreDB is a class that inherits from System.Data.Linq.DataContext."
To:
"VideoGameStoreDBContext is a class that inherits from System.Data.Linq.DataContext."
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 375
|
Line missing from code sample
On page 375, the VB code is missing a line.
Change: Select c
Return query.ToList()
End FunctionTo:
Select c
Trace.WriteLine(query.ToString())
Return query.ToList()
End Function
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 380
|
SELECT statement duplicated
On page 380, the code sample in the UPDATE STATEMENT section is incorrect.
Change:
exec sp_executesql N'UPDATE [dbo].[Product]
SET [ListPrice] = @p2
WHERE ([ProductID] = @p0) AND ([ProductVersion] = @p1)
SELECT [t1].[ProductVersion]
FROM [dbo].[Product] AS [t1]
WHERE ((@@ROWCOUNT) > 0) AND ([t1].[ProductID] = @p3)',
N'@p0 int,@p1 timestamp,@p2 float,
@p3 int',@p0=4,@p1=0x0000000000001696,@p2=39.930000000000007,@p3=4
SELECT [t1].[ProductVersion]'
FROM [dbo].[Product] AS [t1]
WHERE ((@@ROWCOUNT) > 0) AND ([t1].[ProductID] = @p3)',
N'@p0 int,@p1 timestamp,@p2 float,
@p3 int',@p0=4,@p1=0x0000000000001696,@p2=39.930000000000007,@p3=4To:
exec sp_executesql N'UPDATE [dbo].[Product]
SET [ListPrice] = @p2
WHERE ([ProductID] = @p0) AND ([ProductVersion] = @p1)
SELECT [t1].[ProductVersion]'
FROM [dbo].[Product] AS [t1]
WHERE ((@@ROWCOUNT) > 0) AND ([t1].[ProductID] = @p3)',
N'@p0 int,@p1 timestamp,@p2 float,
@p3 int',@p0=4,@p1=0x0000000000001696,@p2=39.930000000000007,@p3=4
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 386
|
Step 7 should be removed
On page 386, step 7 is incorrect and should be disregarded.
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 409
|
OfProduct should be Of Product
On page 409, the 14th line of the code sample is incorrect.
Change:
ObjectQuery(OfProduct) = theContext.ProductTo:
ObjectQuery(Of Product) = theContext.Product
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 410
|
Error in code sample
On page 410, the 10th line of the code sample is incorrect.
Change:
ObjectQuery productQueryUsingNavigationProperty =To:
ObjectQuery productQueryUsingNavigationProperty =
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 437
|
OPERATOR should be FUNCTION
On page 437, the title of the left column in Table 10-7 is incorrect.
Change:
"OPERATOR"
To:
"FUNCTION"
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 455
|
Code should be Practice Files
On page 455, the second sentence of the Lab section is incorrect.
Change:
"All the lab files can be installed from the Code folder on the companion CD."
To:
"All the lab files can be installed from the Practice Files folder on the companion CD."
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 459
|
1943 should be 1942
On page 459, there are three references to “1943: Joint Strike” that should read "1942:Joint Strike."
In step 6, change:
"In the else part of the if statement, change the game’s ProductName to “1943: Joint Strike” (note that the year is changing)."
To:
"In the else part of the if statement, change the game’s ProductName to “1942: Joint Strike” (note that the year is changing)."
On the 6th line of the VB code sample, change:
game.ProductName = "1943: Joint Strike"To:
game.ProductName = "1942: Joint Strike"On the 9th line of the C# code sample, change:
game.ProductName = "1943: Joint Strike";To:
game.ProductName = "1942: Joint Strike";
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 466
|
Visual Studio 7 should be Visual Studio 97
On page 466, the explanation for answer D of Question 1 of Lesson 2 is inaccurate.
Change:
"Correct: Typed DataSets were introduced in Visual Studio 7."
To:
"Correct: Typed DataSets were introduced in Visual Studio 97."
|
Microsoft Press |
May 06, 2010 |
|
| Printed |
Page 476
|
EntityClass Model should be Entity Data Model
On page 476, the explanation of answer D to question 2 is incorrect.
Change:
"Incorrect: This answer refers to the EntityClass Model source code file."
To:
"Incorrect: This answer refers to the Entity Data Model source code file."
|
Microsoft Press |
Jul 13, 2010 |
|
| Printed |
Page 479
|
DataAdapter definition is incorrect
On page 479, the definition for DataAdapter is incorrect.
Change:
"DataReader is used to consume data in a read-only, forward-only, sequential and unbuffered fashion."
To:
"Represents a set of SQL commands and a database connection that are used to fill the DataSet."
Microsoft Press is committed to providing informative and accurate
books. All comments and corrections listed above are ready for
inclusion in future printings of this book. If you have a later printing
of this book, it may already contain most or all of the above corrections.
|
Microsoft Press |
May 06, 2010 |
|
|