在一次开发过程中,遇到了delphi无法编辑oracle表。
问题原因:原来是自己误操作控件的属性了。
问题处理:
OraQuery1.ReadOnly:=False;
OraQuery1.LocalUpdate:=True;
问题-delphi无法编辑oracle表
标签:
小编还为您整理了以下内容,可能对您也有帮助:
oracle存储过程无法编译、表数据无法修改
在对数据的增、删、改操作时,有时会发现一直操作不成功,原因可能是表被锁死;或者存储过程无法编译。
--存储过程无法编译 SELECT V.OSUSER, V.PROCESS,V.PROGRAM,v.MACHINE,V.TERMINAL, V.MODULE,V.USERNAME,V.STATUS,V.SID,V.SERIAL#, 'alter system kill session ''' || V.sid || ',' || V.SERIAL# || ''';' as KILL_SESSION, V.PADDR FROM V$SESSION V WHERE V.USERNAME LIKE '%用户名%' AND V.STATUS in( 'INACTIVE','ACTIVE') and v.PROGRAM = 'plsqldev.exe';
--表无法修改,复制KILL_SESSION列的sql语句执行 SELECT object_name, machine, s.sid, s.serial# , 'alter system kill session ''' || s.sid || ',' || s.SERIAL# || ''';' as KILL_SESSION FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid;
oracle存储过程无法编译、表数据无法修改
在对数据的增、删、改操作时,有时会发现一直操作不成功,原因可能是表被锁死;或者存储过程无法编译。
--存储过程无法编译 SELECT V.OSUSER, V.PROCESS,V.PROGRAM,v.MACHINE,V.TERMINAL, V.MODULE,V.USERNAME,V.STATUS,V.SID,V.SERIAL#, 'alter system kill session ''' || V.sid || ',' || V.SERIAL# || ''';' as KILL_SESSION, V.PADDR FROM V$SESSION V WHERE V.USERNAME LIKE '%用户名%' AND V.STATUS in( 'INACTIVE','ACTIVE') and v.PROGRAM = 'plsqldev.exe';
--表无法修改,复制KILL_SESSION列的sql语句执行 SELECT object_name, machine, s.sid, s.serial# , 'alter system kill session ''' || s.sid || ',' || s.SERIAL# || ''';' as KILL_SESSION FROM gv$locked_object l, dba_objects o, gv$session s WHERE l.object_id = o.object_id AND l.session_id = s.sid;
Delphi 连Oracle 之后的错误!请高手看看!
Delphi连接Oracle数据库的三种方式 本文概括性的介绍在Windows XP环境中Delphi7.0连接Oracle数据库的3种方式,它们分别是BDE、ADO、DbExpress。
这3种方式都需要安装Oracle客户端并配置tnsnames.ora文件。将Oracle客户端安装到本地计算机,打开c:\oracle\…\network\admin\tnsnames.ora文件,按照所要访问的数据库的配置,添加下面的内容
TEST =(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.2.134)(PORT = 1521)) )
(CONNECT_DATA =(SID = test) )
)
其中HOST,PORT,SID的值与所访问的数据库配置有关。
1传统的BDE
BDE(Borland Database Engine)使用别名引用数据库文件或目录,需要在客户的计算机上与应用程序一起安装BDE。连接步骤:
1.1 安装BDE。在Delphi7.0的安装盘中含有BDE安装程序,按照默认方式安装的计算机,并配置好所要访问的Oracle数据库的别名,例如:test。
1.2 在Delphi7.0的程序中连接Oracle数据库。将BDE选项卡中的TDatabase组件将放入应用程序的主窗体,双击TDatabase,出现TDatabase组件编辑器,输入数据库别名、用户名和密码,点击OK按钮。在对象检视器中将TDatabase组件的LoginPrompt属性值设为False(避免出现登陆对话框,下同),将TDatabase组件的Connected属性值设为True,这样就成功的连接到Oracle服务器了。
1.3 使用TTable组件访问数据。将TTable组件放置到应用程序的主窗体,设置其DatabaseName属性值为test,再放入TdataSource和TDBGrid组件,接下来的工作就与开发本地数据库应用程序相同了。
2 Microsoft的ADO
ADO(ActiveX Data Objects)是Microsoft的高级接口,基于Microsoft的数据访问OLEDB技术而实现。连接步骤:
2.1 在Delphi7.0的程序中连接Oracle数据库。将ADO选项卡中的TADOConnection组件放入应用程序的主窗体,双击TADOConnection,在出现的对话框中点选Use Connection String,在其下面的框中输入:Provider=MSDAORA.1;User ID=test;Data Source=test;Persist Security Info=False,其中test为Oracle服务器名和用户名。在对象检视器中将TADOConnection组件的LoginPrompt属性值设为False,将TADOConnection组件的Connected属性值设为True,这样就成功的连接到Oracle服务器了。
2.2 使用TADOCommand组件访问数据。将TADOCommand组件放置到应用程序的主窗体,设置其Connec tion属性值为Connection1,点击其CommandText属性值,在出现的对话框中输入SQL查询语句(本文以查询数据为例),再放入TdataSource和TDBGrid组件,接下来的工作就与开发本地型数据库应用程序相同了。
3 新一代夸平台的数据库访问引擎DbExpress
DbExpress是一组新的组件,技术和驱动程序,具备了夸平台的能力,让程序员能够开发出更有效率的数据库应用程序,因此会成为以后Delphi和Kylix的核心数据访问技术。连接步骤:
3.1 在Delphi7.0的程序中连接Oracle数据库。将 dbExpress选项卡中的TSQLConnection组件放入应用程序的主窗体,双击TQLConnection,出现TSQLConnection组件编辑器,选择Oracle作为Driver Name,输入数据库名称、用户名和密码,点击OK按钮。在对象检视器中将TSQLConnection组件的LoginPrompt属性值设为False,将TSQLConnection组件的Connected属性值设为True,这样就成功的连接到Oracle服务器了。
3.2 使用TSQLDataSet组件访问数据。将TSQLDataSet组件放置到应用程序的主窗体,设置其SQLConne ction属性值为SQLConnection1,点击其CommandText属性值,在出现的对话框中输入SQL查询语句(本文以查询数据为例),再放入TdataSource和TDBGrid组件,接下来的工作就与开发本地数据库应用程序相同了。
用delphi查询oracle数据库只读数据时提示dataset not in edit or insert mode
最后这两句有问题:
DataSource1.DataSet:=ADOQuery1;
DBGrid1.DataSource:=DataSource1;
最好是在DataSource1和DBGrid1的属性中设置,也就是静态设置,设置完成以后,再将ADOQuery1.Open;
另外这句:ADOConnection1.ConnectionString:='Provider=MSDAORA.1;User ID=u1cs;Data Source=jqdb';
oracle的连接引擎最后用oracle自己的,Provider=OraOLEDB.Oracle.1;