㈠ 如何实现数据库的查询
在具体一点,这点信息实在看不明白
㈡ 数据库的链接是如何实现的
自定义的登陆类db.cs,代码是连接数据库:
public static SqlConnection getconn()
{
string sqlconn = "Data Source=dongxiao-d24e0f;Initial Catalog=web;Integrated Security=True";
SqlConnection myconn = new SqlConnection(sqlconn);
return myconn;
}
SqlConnection mycon1 = db.getconn();//调用自定义类的属性
SqlConnection mycon2 = db.getconn();
mycon2.Open();//判断用户名是否存在的connection对象打开数据库
SqlCommand cmd1 = new SqlCommand(si, mycon1);//两个connection对象
SqlCommand cmd2 = new SqlCommand(sql1, mycon2);
SqlDataReader rs1 = cmd2.ExecuteReader();//定义SqlDataReader对象,提取数据库相应的数据
这是sqlserver的,自己改一下成你要的就行了
㈢ 怎么实现数据库的共享
access数据库只适合存放少量的数据,只适用于小型程序,适用于winform的单机版安装程序,它是办公软件中自带的数据库,所以也无法实现共享,如果你要实现数据共享,可能要用其他数据库才可以,比如sql server
满意请采纳。
㈣ 怎样实现数据库实时同步这种思路是否可行
建立远程数据库链接,然后在你需要同步的表上建触发器:每当表有修改时,自动修改远程数据库的相应表。
----------------------------------
抱歉,你的题目我没理解正确,其实你使用双机热备就行了,在网上找到一个教程,是这个网址:
http://blog.csdn.net/isoftk/archive/2007/12/03/1914175.aspx
你看一下吧。
----------------------------------
不是,我先前的理解不正确,后来的理解才正确,现在是你开始走弯路了,你就按照我给的网址学习双机热备吧,肯定能达到你的目的。
另:送你关于远程数据库映射的东西:
SqlServer数据库:
--这句是映射一个远程数据库
EXEC sp_addlinkedserver '远程数据库的IP或主机名',N'SQL Server'
--这句是登录远程数据库
EXEC sp_addlinkedsrvlogin '远程数据库的IP或主机名', 'false', NULL, '登录名', '密码'
--登录后,可以用以下格式操作远程数据库中的对象
select * from [远程数据库的IP或主机名].[数据库名].[dbo].[表名]
我仔细考虑了一下,用这种方式无法满足你的要求,所以请你用双机热备完成。
-------------------------------
原来是要在互联网环境下啊,你一直没有提,汗。。。
我水平有限,这个没什么好的思路,帮不上你,抱歉了。
我所能想到的,只有两种不成熟的思路:
1、用VPN架出局网环境,这个你可能条件所限,不能实现。
2、第二种思路是以我浅薄的知识想象出来的笨方法,拐弯抹角的而且不安全,大体思路就是,在B服务器上架构一个WEB服务器,用ASP或JSP什么的做一个页面,可以接收字串参数并作为sql语句执行(当然你要做好验证工作),然后修改A服务器的程序,使其每当对数据库有修改操作时,就同时向B机的WEB主页发送一个页面申请(比如 http://111.222.333.444/runsql.asp?sql=update AA set BB='cc'),这样B主机的WEB服务就会同步执行这个SQL语句了。(注意这种方法需要你的B机是以固定IP模式连网的,这需要向电信局申请)
说实话这第二种方法连我自己都觉得可笑,但水平实在有限,所以在这儿只是大胆说出我的想法,还请楼主或是其它高手看了不要见笑。
㈤ 如何自己实现一个关系型数据库
对外数据模型为关系型数据库,内部的实现主要分成两大类,一类是disk-based,比如mysql,postgres,一类是memory based,后者包括MemSQL,SAP HAHA,OceanBase。看题目的意思指的是前者。这里说一个disk-based的关系型数据库涉及多少东西。
上世纪70/80年代内存不大,数据不能都放在内存里,大部分数据都存在磁盘上,读数据也需要从磁盘读,然而读写磁盘太慢了,所以就在内存里做了一个buffer pool,将已经读过的数据缓存到buffer pool中,写的时候也是写到buffer pool中就返回,buffer pool的功能就是管理数据在磁盘和内存的移动。在buffer pool中数据的管理单位是page。page大小一般几十KB。一般都可以配置。如果buffer pool中没有空闲的page,就需要将某一个page提出buffer pool,如果它是dirty page,就需要flush到磁盘,这里又需要一个LRU算法。一个page包含多条记录,page的格式需要设计用来支持变长字段。如果这时宕机了,buffer pool中的数据就丢了。这就需要REDO log,将对数据的修改先写到redo log中,然后写buffer pool,然后返回给客户端,随后,buffer pool中的dirty page会被刷到数据文件中(NO FORCE)。那么重启的时候,数据就能从redo log中恢复。REDO log还没刷完就刷数据到磁盘可以加快写入速度,缺点就是恢复的时候需要回放UNDO log,回滚一些还没有提交的事务的修改。写log又分为逻辑log和物理log,还有物理逻辑log。简单说逻辑log就是记录操作,比如将某个值从1改成2.而物理log记录具体到record的位置,例如某个page的某个record的某个field,原来的值是多少,新值是多少等。逻辑log的问题是并发情况下不太好恢复成一致。物理log对于某些操作比如create table又过于琐碎,所以一般数据库都采用混合的方式。为了跟踪系统中各种操作的顺序,这就需要为log分配id,记做LSN(log sequence number)。系统中记录各种LSN,比如pageLSN, flushedLSN等等。为了加快宕机恢复速度,需要定期写checkpoint,checkpoint就是一个LSN。
以上ACID里的C和D有关。下面说A和I,即原子性和隔离性。
这两个性质通过concurrency control来保证。隔离级别有很多种,最开始有4种,从低到高read uncommitted, read committed, repeatable read, serializable。serializable就是多个事务并发执行的结果和某种顺序执行事务的结果相同。除了serializable,其他都有各种问题。比如repeatable read有幻读问题(phantom),避免幻读需要gap lock。read committed有幻读和不可重复读问题。后来又多了一些隔离级别,比如snapshot isolation,snapshot isolation也有write skew问题。早期,并发控制协议大多是基于两阶段锁来做的(2PL),所以早期只有前面提到的四种隔离级别,后来,又出现一类并发控制协议,统称为Timestamp Ordering,所以又多了snapshot isolation等隔离级别。关于隔离级别,可以看看这篇论文 http://research.microsoft.com/pubs/69541/tr-95-51.pdf。2PL需要处理deadlock的问题。
Timestamp Ordering大体的思想就是认为事务之间冲突不大,不需要加锁,只在commit的时候check是否有冲突。属于一种乐观锁。
Timestamp Ordering具体来说包括多种,最常见的MVCC就是这类,还有一类叫做OCC(optimistic concurrency control)。MVCC就是对于事务的每次更新都产生新的版本,使用时间戳做版本号。读的时候可以读指定版本或者读最新的版本。几乎主流数据库都支持MVCC,因为MVCC读写互相不阻塞,读性能高。MySQL的回滚段就是用来保存老的版本。MVCC需要有后台线程来做不再需要的版本的回收工作。Postgres的vacuum就是做这事的。OCC和MVCC的区别是,OCC协议中,事务的修改保存在私有空间(比如客户端),commit的时候再去检测冲突,通常的做法是事务开始时看一下自己要修改的数据的最后一次修改的时间戳,提交的时候去check是否这个时间戳变大了,如果是,说明被别人改过了,冲突。冲突后可以回滚或者重试。
上面这些搞定了就实现了数据库的核心,然后为了性能,需要index,通常有两种,一种支持顺序扫描B+Tree,还有一种是Hash Index。单条读适合用Hash Index,O(1)时间复杂度,顺序扫描只适合用B+Tree,O(logN)复杂度。然后,有些查询只需要扫描索引就能得到结果,有些查询直接扫描数据表就能得到结果,有些查询可以走二级索引,通过二级索引找到数据表然后得到结果。。具体用哪种方式就是优化器的事了。
再外围一些,关系型数据库自然需要支持SQL了,由SQL变成最后可以执行的物理执行计划中间又有很多步,首先SQL通过词法语法分析生成抽象语法树,然后planner基于这棵树生成逻辑执行计划,逻辑执行计划的生成通常涉及到等价谓词重写,子查询消除等逻辑层面的优化技术,优化的目的当然是性能。比如等价谓词重写,用大于小于谓词消除like,between .. and..等不能利用索引的谓词。下一步是逻辑执行计划生成物理执行计划,物理执行计划树每个节点是一个operator,operator的执行就是实实在在的操作,比如扫表的operator,filter opertor。一个逻辑执行计划通常可以有多个物理执行对应,选择哪个就涉及到物理执行计划优化,这里涉及到经典的cost model,综合考虑内存,CPU, I/O,网络等。最典型的,三表join,从左到右还是右到左,使用hash join,还是sort merge join等。
㈥ 如何实现该数据库设计和实现
XP?sql2005, 64位2008,可以网上下载
㈦ 简述关系数据库是如何实现数据库中的数据是相互关联的
选择 投影 连接 并 交 差 除,这是最简答案。
你问是 如何实现数据是关联的。 实现两个字我解释不了,太难。
数据是如何关联的,简单说,单表单行的多个字段是关联的,多表不同字段通过选择 投影 连接 并 交 差 除也是可以关联的。
㈧ java中如何实现数据库连接
Class.formName(""); // 注册驱动类.这个字符串是什么,由要连接的数据库决定.
Conncection conn = DriverManager.getConnection(url,user,pass); // 通过URL,数据库用户名,密码,取得连接
下边以Oracle为例.
Class.formName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:SID";
Conncection conn = DriverManager.getConnection(url,user,pass);
㈨ 如何实现数据库完整性
数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。数据完整性因此而提出。数据完整性是指数据的精确性和可靠性。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性分为四类:实体完整性、域完整性、参照完整性、用户定义的完整性。数据库采用多种方法来保证数据完整性,包括外键、约束、规则和触发器。系统很好地处理了这四者的关系,并针对不同的具体情况用不同的方法进行,相互交叉使用,相补缺点。
楼上说的主键外键只是一方面,还有约束、规则和触发器,通过设置,由DBMS来自动完成。
㈩ 如何实现数据库与系统的连接
打开Microsoft
Office
Access
基本数据库,新建一个新的数据库,如图所示,或者快捷键CTRL+N。
在软件界面右边,可以选择“空数据库”,填写数据库名字,并保存数据库。
3
设计数据表,输入字段名称,最后再输入相应的数据。
4
为数据库添上名字:“成绩表”输入相应的数据,至此,一个可用的数据库就完成了。