我给你个方法,不知道可以不,我的电脑没有数据库没有测试。代码如下;
数据库:
create table tb_name(id int primary key identity,
key int,
name varchar(50)
)
insert intio tb_name(key,name) value (1,'魏巍')
insert intio tb_name(key,name) value (2,'lily')
insert intio tb_name(key,name) value (3,'lucy')
C#代码如下:
protected void Page_Load(object sender, EventArgs e){
if (!IsPostBack)
{
_dictionaryAdd(1,"魏巍");
_dictionaryAdd(2,"lucy");
var alert = "";
foreach (var name in getNames()) //循环集合
{
if (_dictionaryContainsValue(namename)) //判断集合中是否存在表中的数据,ContainsValue这里判断的是字典的值。
//如果判断键值可以使用ContainsKey(namekey)进行判断
{
alert += "字典集合中存在" + namename;
}
}
ResponseWrite(alert);
}
}
/// <summary>
/// 定义方法,从数据库中得到数据
/// </summary>
/// <returns>返回name集合</returns>
private List<Names> getNames()
{
List<Names> names = null;
var str = ConfigurationManagerConnectionStrings["DefaultConnection"]ConnectionString;
var conn=new SqlConnection(str);
const string sql = "select from tb_name";
connOpen();
var cmd = new SqlCommand(sql,conn);
var reader = cmdExecuteReader();
while (readerRead())
{
var name = new Names
{
id = (int)reader["id"],
key =ConvertToInt32(reader["key"]),
name = reader["name"]ToString()
};
namesAdd(name);
}
return names;
}
//定义集合
Dictionary<int,string> _dictionary=new Dictionary<int, string>();
//定义类映射数据库中的表
public class Names
{
public int id { get; set; }
public int key { get; set; }
public string name { get; set; }
}
呵呵,应该可以吧。。。顶一下吧。。。
数据库一般分为两种类型:关系型数据库和非关系型数据库
关系型数据库
关系型数据库是最常见的数据,其内部采用库表结构,每一条记录可以记录多个数据类型的数据一条记录内的数据彼此之间存在关系
例如:
ID name age sex
1 张三 12 男
因为彼此之间存在关系,所以不论你搜索id=1/name=张三/age=12/sex=男都能搜出来这条记录
代表软件:Mysql access SQLServer Oracle
非关系型数据库
非关系型数据库是目前比较新的一种数据库,特点就是数据全部由键值对(key/value)组成获取数据一般只通过键(key)来获取
例如:
ID Value
1 aaaavi
2 bbbMP4
这种数据库优点是,速度快,需要明确的目标key来快速指定和获取目标一般目前在大数据存储上体现着优势例如大型视频库,只需要知道视频的id就能快速得知视频位置
当然这不是主要的,非关系型数据库有个极大的优势,就是一般都采用内存缓存方式存在它们一般把数据拷贝一份放在内存中,这样可以更加快速的读取数据(内存的速度一般是硬盘的几十倍)
非关系型数据库另一个主要用途是快速缓存,即快速的缓存一些数据,但并不一定要长期保留,例如直播中的d幕,一般都会采用非关系型数据库来保存,到期之后批量写入关系型数据库保存,然后自我清空
代表软件:Mongodb Redis Memcache
实际使用
在实际使用中,一般都是关系型数据库独立使用,关系型数据库+非关系型数据库一起用这两种方式因为非关系型数据库一般不用来存储,所以还是需要关系型数据库来保存一些数据
总结
关系型数据库:存储长期稳定数据,例如会员信息等等但是读取写入速度慢,高并发时较麻烦,容易产生瓶颈
非关系型数据库:存储临时数据或需要快速读取数据,例如d幕等但是一般不用来保存数据,内存关机即清空
数据库有两种类型,分别是关系型数据库与非关系型数据库。
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等 *** 作。
关系型数据库主要有:
Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等等。
非关系型数据库主要有:
NoSql、Cloudant、MongoDb、redis、HBase等等。
扩展资料:
非关系型数据库的优势:
1、性能高:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
2、可扩展性好:同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
关系型数据库的优势:
1、可以复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
2、事务支持良好:使得对于安全性能很高的数据访问要求得以实现。
参考资料来源:百度百科-数据库
Nosql的全称是NotOnlySql,这个概念很早就有人提出。Nosql指的是非关系型数据库,而我们常用的都是关系型数据库。就像我们常用的mysql,oralce、sqlserver等一样,这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。但是,随着互联网的高速发展,传统的关系型数据库在应付超大规模,超大流量以及高并发的时候力不从心。而就在这个时候,Nosql应运而生。
上面说的是NOSQL的定义Nosql和关系型数据库的区别,这里我说明一比较重要的区别。
存储格式:关系型数据库是表格式的,存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便。而Nosql数据库则与其相反,他是组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。举个例子,例如在游戏里面玩家的背包数据,我们都知道一个游戏里面的道具是很多,而且不确定玩家什么时候获取什么道具,这个时候如果想在关系数据库里面存储数据,这个表怎么建立就是一个很大的问题,如果你把所有的道具ID当做表头,那么后续每增加一个道具,就需要修改这张表。如果你的表结构是:
用户ID|道具ID|道具数量|道具特殊属性
那么可以想象一下这张表随着用户的增多会变的多么的庞大。所以这个时候我们就需要一个能直接像 *** 作玩家对象一样的数据库,这里比较代表性的就是mongo,通过这个我们就可以看出nosql数据库更适合存储结构不确定的数据。
存储扩展:这可能是两者之间最大的区别,关系型数据库是纵向扩展,也就是说想要提高处理能力,要使用速度更快的计算机。因为数据存储在关系表中, *** 作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服。虽然有很大的扩展空间,但是最终会达到纵向扩展的上限。而Nosql数据库是横向扩展的,它的存储天然就是分布式的,可以通过给资源池添加更多的普通数据库服务器来分担负载。
上面的的例子已经说明了这个问题。在现代互联网时代大家都是希望能横线扩展服务。这样付出的代价是最小的。
对于上面关系型数据库和NOSQL数据库的区别其实还有很多。我相信大家在用的都会感觉到。上面列出的只是我感觉区别最大的。
那么NOSQL这么好用,是不是都可以用了呢,显示不是这样,NOSQL对于聚合查询显示不是他的强项。这个时候就需要关系型数据库。我是这样建议,对于结构统一,应该存储于关系型数据库,对于结构不统一的可以存储到NOSQL数据库例如mongo。但是这个不是绝对的,在实际的项目的开发过程中,需要根据的自己的业务,仔细揣摩一下,做好最合适的划分。
常见关系型数据库通常有SQLServer,Mysql,Oracle等。主流的Nosql数据库有Redis,Memcache,MongoDb。大多数的关系型数据库都是付费的并且价格昂贵,成本较大,而Nosql数据库通常都是开源的。在互联网行业用大多也是免费的MYSQL(这里偷笑一下)。
在实际的项目中大家的项目都是如何选择的呢?大家可以关注我,私信或者在评论区留言。
以上就是关于C#的问题 Dictionary键值对和从数据库中读取的DataSet对比问题,好答案加分全部的内容,包括:C#的问题 Dictionary键值对和从数据库中读取的DataSet对比问题,好答案加分、数据库常见的数据类型大致分为几类,请分别举例、数据库的类型都有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)