多线程获取数据库数据

在开发中,如大量获取数据时,不但速度慢,而且影响效率,下面就给大家介绍下用多线程获取数据库数据:

1.首先新建一个获取实体列表的方法,如想获取数量或其他类型,需要另外编写方法,这里只是做简单的介绍:

/// <summary>
/// 根据SQL语句返回实体集合,这里不能返回IQueryable,否则在线程中会获取不到上下文对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <returns></returns>
public static List<T> GetModelList<T>(string sql)
{
    using (RoomsEntities rooms = new RoomsEntities())
    {
        return rooms.Database.SqlQuery<T>(sql).ToList();
    }
}

2.多线程执行过程:

//开始计时
Stopwatch sw = new Stopwatch();
sw.Start();
string sqlMember = "";
string sqlRoom = "";
List<Member> MemberList = null;
List<Room> RoomList = null;
using (RoomsEntities rooms = new RoomsEntities())
{
    var queryMember = rooms.Member.Where(u => u.IsStop == false);
    sqlMember = queryMember.ToString(); //这里ToString()后取到的是SQL语句
    var queryRoom = rooms.Room.Take(10);
    sqlRoom = queryRoom.ToString();
}
//开启两个线程执行
Task t1 = Task.Factory.StartNew(() =>
{
    MemberList = GetModelList<Member>(sqlMember);
});
Task t2 = Task.Factory.StartNew(() =>
{
    RoomList = GetModelList<Room>(sqlRoom);
});
Task.WaitAll(t1, t2); //等待两个线程完成,这里等待的t1,t2线程是同时执行的
sw.Stop();
TimeSpan ts2 = sw.Elapsed;
Console.WriteLine("运行时间:" + ts2.TotalMilliseconds);
Console.ReadKey();
时间: 2024-08-13 18:33:18

多线程获取数据库数据的相关文章

C#后台获取数据库数据--ADO.NET

关于获取数据库中的数据到后台,可分为4个步骤:1.获取连接数据库的字符串:2.创建SqlConnection对象用于打开数据库:3.创建SqlCommand对象用于执行操作,设置它的一系列属性即可:4.关闭数据库连接.完成了这个四个步骤就可获取到数据库中的数据. //第一步 string connStr = "Data Source=.;Initial CataLog=MyData;User ID=sa;Password=123456"; //第二步 SqlConnection con

jmeter JDBC Request (查询数据库获取数据库数据) 的使用

JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原件(配置数据库连接的相关属性,如连接名.密码等)一起使用. 一.准备工作 1.本文使用的是mysql数据库进行测试,数据库的用户名为root(你自己的用户名),用户名密码为*********(你自己的密码) 2.数据库中有表:test,表的数据结构如下: 表中数据如下: select * from

转jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用

JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原件(配置数据库连接的相关属性,如连接名.密码等)一起使用. 一.准备工作 1.本文使用的是mysql数据库进行测试,数据库的用户名为root(你自己的用户名),用户名密码为*********(你自己的密码) 2.数据库中有表:test,表的数据结构如下: 表中数据如下: select * from

java获取数据库数据表的元数据

Connction conn; DatabaseMetaData dmd=conn.getMetaData();//获取数据库元数据 PreparedStatment ps; ps.getParameterMetaData; //得到参数占位符的元数据 ResultSet rs; ResultSetMetaData rsmd=rs.getMetaData();//获取结果集的元数据

Thinkphp5获取数据库数据到视图

这是学习thinkhp5的基础篇笔记. 本文主要讲怎么配置数据库链接,以及查询数据库数据,并且最后将数据赋给视图. 数据库配置: thinkphp5的数据库配置默认在conf下的database.php下面.我的数据库配置项目如下 1 <?php 2 3 return [ 4 5 // 数据库类型 6 'type' => 'mysql', 7 // 数据库连接DSN配置 8 'dsn' => '', 9 // 服务器地址 10 'hostname' => '127.0.0.1',

构造From窗体获取数据库数据,去除数据库中无用信息,并赋值给字段,最后画出图

private void cbNum_SelectedIndexChanged(object sender, EventArgs e) { FieldListLug.Clear();//继续清除字段 if (cbType.Text == A)//选择了A { string killedString = ""; killedString = "ID,lugNumber,q1,q2,DnX,DnD,Th,kg"; DataTable tbSize =GetAccessD

38)PHP,获取数据库数据并在html中显示(晋级5)

首先是我的文件关系: 我的主php文件是index.php,我的配置文件php是BBB.php  我的数据库操作文件是  b.php    我的html文件是login.html 我的index.php代码展示: 1 <?php 2 $sql='select * from zixun;'; 3 $config=include './BBB.php'; 4 include './b.php'; 5 6 $shujuku=new db($config); 7 include './login.htm

nodejs+express+mongoose无法获取数据库数据问题解决

通过mongoose与mongodb进行操作.而mongoose是通过model来创建mongodb中对应的collection的,这样你通过如下的代码: mongoose.model('User', UserSchema); 在相应的数据库中创建一个collection时,第一反应肯定会推断在对应的数据库中会建立一个'User'的collection,但是事实却与推断完全不一样,mongoose在内部创建collection时将我们传递的collection名小写化,同时如果小写化的名称后面没

Django获取数据库数据时根据id筛选

filter(id__in=models.Teacher.objects.all()[0:5]) teacher_list = models.Teacher.objects.filter(id__in=models.Teacher.objects.all()[0:5]).values('id', 'name', 'cls__id', 'cls__caption') 原文地址:https://www.cnblogs.com/jiefangzhe/p/10773478.html