C#如何tesk多线程读取sqlserver数据库表里的信息
时间: 2023-07-26 11:34:33 浏览: 63
在 C# 中使用多线程读取 SQL Server 数据库表中的信息,可以使用以下步骤:
1. 创建一个 SQL 连接对象,并打开连接。
2. 创建一个 SQL 命令对象,并设置 SQL 查询语句。
3. 创建一个 SQL 数据适配器对象,并将 SQL 命令对象作为参数进行设置。
4. 创建一个数据表对象,用于存储查询结果。
5. 创建多个线程对象,并为每个线程分配一个任务。
6. 在每个线程中使用 SQL 数据适配器对象来填充数据表对象。
7. 在主线程中等待所有线程完成任务,并合并所有数据表对象。
下面是示例代码:
```csharp
using System;
using System.Data.SqlClient;
using System.Data;
using System.Threading;
public class Program
{
static void Main(string[] args)
{
string connectionString = "Data Source=serverName;Initial Catalog=databaseName;Integrated Security=True;";
string query = "SELECT * FROM tableName;";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlCommand command = new SqlCommand(query, connection);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable table = new DataTable();
Thread[] threads = new Thread[5];
for (int i = 0; i < threads.Length; i++)
{
threads[i] = new Thread(() =>
{
adapter.Fill(table);
});
threads[i].Start();
}
foreach (Thread thread in threads)
{
thread.Join();
}
// Merge all tables
DataTable mergedTable = new DataTable();
foreach (DataColumn column in table.Columns)
{
mergedTable.Columns.Add(column.ColumnName, column.DataType);
}
foreach (DataRow row in table.Rows)
{
mergedTable.ImportRow(row);
}
connection.Close();
}
}
```
在上面的示例代码中,我们使用了 5 个线程来读取数据表中的信息,并将结果存储在一个数据表对象中。最后,我们合并了所有数据表对象,得到了完整的查询结果。