String and StringBuilder
There is often a problem when using the String class: When you reassign a value for the same string each time, a new string object is created in memory, and the new object needs to be allocated new space, which increases the overhead of the system. Because system. The string class is an immutable data type, and once the string object is initialized, the value of the string object cannot be changed. When a change is made to the value of the string, a new string object is actually created. Now let's analyze what the output of this piece of code consists of the following three statements.
String strText = "Hello";
StrText + = "World";
Console.WriteLine (StrText);
The answer is simple, and it is easy to see that the output of the above code is "HelloWorld". But how many objects does this piece of code create? Let's illustrate it in a graphical way. When you execute the first statement, you first create a string class object with a value of "Hello", and then assign the object's reference to strtext through the assignment operator.
When you execute the second statement, strtext updates the value on the surface. But in fact, two new objects were created in memory, the values of which are "world" and "HelloWorld". At this point, there are three objects in memory, namely Hello, world, and HelloWorld. and Strtest is referring to the HelloWorld object. If you have a string object in your program that repeatedly modifies the content, the overhead is costly and may result in a decrease in the performance of your application. How to avoid this situation? Is there a class that can be repeatedly modified without having to create new objects? Yes, this is the StringBuilder class in C #.
Next, we introduce the definition and processing method of StringBuilder class object.
To address the above problem, Microsoft provides a System.Text.StringBuilder class that represents a mutable string. Although the StringBuilder class does not want the string class to have many methods of handling strings, the StringBuilder class object executes much faster than a string class object when replacing, adding, or removing strings. Now let's look at how the StringBuilder class object is defined.
Grammar:
Declares an empty StringBuilder object
StringBuilder Object name = new StringBuilder ();
Declares a StringBuilder object with a value of "string initial value"
StringBuilder Object name = new StringBuilder ("string initial value");
For example
System.Text.StringBuilder sbtext = new StringBuilder ();
Sbtext.append ("Hello");
Sbtext.append ("HelloWorld");
In the above code, use the StringBuilder class to refer to the System.Text namespace first, and then create the StringBuilder object Sbtext. When the Sbtext object calls the Append () method, appends a new string to the original string of the Sbtext object instead of creating a new object. The StringBuilder class is a dynamically allocated space that allows you to expand the number of characters in the string it encapsulates. If necessary, you can use the ToString () method to convert the value of the Sbtext object to a string type output.
StringBuilder commonly used properties and methods
Property |
Description |
Capacity |
Gets or sets the maximum number of characters that can be included in the memory allocated by the current object |
Length |
Gets or sets the length of the current object |
Method |
Description |
StringBuilder Append (String value) |
Append at end |
StringBuilder Append (String format,object arg0,object arg1) |
Add a string of a specific format |
StringBuilder Insert (int index,string value) |
Inserts the specified string at the specified location |
Remove (int startindex,int length) |
Remove the specified string |
- The steps to pop up the text Visualizer dialog box in the program debug state are as follows.
Set breakpoints → start debugging → view values into the Watch Window → The small magnifying glass icon to the right of the value column in the stand-alone Watch Window pops up the Text Visualizer dialog box.
- When writing SQL statements, add a pair of brackets [] between the table name and column name of the database to distinguish between specific strings that do not conform to the naming conventions, or to prevent the column names of database tables from conflicting with system keywords. As the assumption indicates that the SELECT,SQL statement is "SELECT * from select;" A syntax error will be generated. However, if you change to "select * from [select];", this is the correct SQL statement to execute normally.
Attention:
- If you want to convert a StringBuilder class object to a String class object, the only way is to use the ToString () method.
- The StringBuilder class does not always improve performance, and he basically uses it when working with multiple strings. If you are just connecting two strings, it would be nice to use the System.String class.
Querying data
In the previous chapter, we explained how to connect an application to a database through a Connection object and use the ExecuteScalar () method of the Command object to get a single value from the query database. In actual work, we may query the database to return multiple records, how to get a query to get multiple rows and columns of data values? We can use the Command object's ExecuteReader () method to return a DataReader object that can read multiple records from the database by DataReader.
DataReader Object
Ado. NET DataReader objects can retrieve read-only, forward-only streams of data from the data source, extracting only one record from the data source at a time. Using DataReader can improve the performance of your application and reduce system overhead. DataReader belongs to a. NET data provider, and each. NET data provider has a corresponding DataReader class.
. NET data provider and its DataReader class
. NET Data Provider |
DataReader class |
Name space |
SQL data Provider |
SqlDataReader |
System.Data.SqlClient |
OLE DB data Provider |
OleDbDataReader |
System.Data.OleDb |
ODBC data Provider |
OdbcDataReader |
System.Data.Odbc |
Oracle Data Provider |
OracleDataReader |
System.Data.OracleClient |
s1/c# Language and database Technology Fundamentals/15-using ADO to query and manipulate data