最后这两句有问题:
DataSource1DataSet:=ADOQuery1;
DBGrid1DataSource:=DataSource1;
最好是在DataSource1和DBGrid1的属性中设置,也就是静态设置,设置完成以后,再将ADOQuery1Open;
另外这句:ADOConnection1ConnectionString:='Provider=MSDAORA1;User ID=u1cs;Data Source=jqdb';
oracle的连接引擎最后用oracle自己的,Provider=OraOLEDBOracle1;
图形工具不太清楚,这个应该是根据工具不同,方法不同。
数据库的话你可以设置:
read_only=1,全库普通账号只读
super_read_only=1,全账号只读,mysql的root用户都不能写入
但是这样整个实例就不能写入了。
只读方式打开:采用这种方式打开数据库,只能查看而无法编辑数据库,可以防止数据修改。
以独占只读方式打开:一个用户采用这种方式打开数据库,该用户只能查看而无法编辑数据库,其他用户只能以只读方式打开此数据库。
此外还有以共享方式打开,以独占方式打开。
新建角色,权限继承自db_datareader;
删除原有用户的角色;
把所有用户添加到新建角色中;
这样的话这个用户就只有读取某一个库的权限而不能进行写入或者修改了;
但是整个服务器下这个权限的管控还涉及到了其他层面,比如登录名和用户的对应,用户和角色的对应。
每个使用关系型数据库的程序都可能遇到数据死锁或不可用的情况,而这些情况需要在代码中编程来解决;本文主要介绍与数据库事务死锁等情况相关的重试逻辑概念,此外,还会探讨如何避免死锁等问题,文章以DB2(版本9)与为例进行讲解。
什么是数据库锁定与死锁
锁定(Locking)发生在当一个事务获得对某一资源的“锁”时,这时,其他的事务就不能更改这个资源了,这种机制的存在是为了保证数据一致性;在设计与数据库交互的程序时,必须处理锁与资源不可用的情况。锁定是个比较复杂的概念,仔细说起来可能又需要一大篇,所以在本文中,只把锁定看作是一个临时事件,这意味着如果一个资源被锁定,它总会在以后某个时间被释放。而死锁发生在当多个进程访问同一数据库时,其中每个进程拥有的锁都是其他进程所需的,由此造成每个进程都无法继续下去。
如何避免锁
我们可利用事务型数据库中的隔离级别机制来避免锁的创建,正确地使用隔离级别可使程序处理更多的并发事件(如允许多个用户访问数据),还能预防像丢失修改(LostUpdate)、读“脏”数据(DirtyRead)、不可重复读(NonrepeatableRead)及“虚”(Phantom)等问题。
隔离级别问题现象
丢失修改读“脏”数据不可重复读“虚”
可重复读取NoNoNoNo
读取稳定性NoNoNoYes
光标稳定性NoNoYesYes
未提交的读NoYesYesYes
表1:DB2的隔离级别与其对应的问题现象
在只读模式中,就可以防止锁定发生,而不用那些未提交只读隔离级别的含糊语句。昌平镇电脑培训发现一条SQL语句当使用了下列命令之一时,就应该考虑只读模式了
原因:
有几个主要的错误原因:
这个错误发生在当你的程序试图执行更新数据库或其它类似 *** 作时。这是因为
ADO由于以下的几个原因而不能够写数据库造成的。
1。最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。
要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。
当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为
Jet需要在该目录建立一个ldb文件。
2。第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。
SQL = "UPDATE Products Set UnitPrice = 2;"
Set Conn = ServerCreateObject("ADODBConnection")
ConnMode = 3 '3 = adModeReadWrite
ConnOpen "myDSN"
ConnExecute(SQL)
ConnClose
注意默认的Mode是设置0(adModeUnknown),它是允许更新的。
3。还有可能是在ODBC管理器中将该DSN的只读选项选中。
4。你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新
这两个表中各自字段。
5。当你使用了一个从低版本中(如ACCESS20,ACCESS70)载入到高版本(ACCESS 2000)
中的查询时,在执行这个查询是会出现该错误。
1、双击Access图标。
2、打开Access后,菜单栏单击“文件”项。
3、在“文件”下拉菜单中选择“打开”项。
4、打开一个Access文件,点“打开”。
5、找开文件后,单击菜单栏中的“工具”。
6、在“工具”下拉菜单中选择“选项”。
7、在“高级”窗口下找到“默认打开模式”,选择“独占”,单击“确定”完成。
以上就是关于用delphi查询oracle数据库只读数据时提示dataset not in edit or insert mode全部的内容,包括:用delphi查询oracle数据库只读数据时提示dataset not in edit or insert mode、sql数据库里单元格是只读的,无法修改编辑,怎么弄(只读单元格如何修改)、一用户打开数据库,只能查看内容而无法编辑,同时其他用户只能以只读方式打开此数据库,数据库打开方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)