新文章 网摘 文章 随笔 日记

delphi中连接到oracle字符串写法


Provider=OraOLEDB.Oracle.1;Password=****;Persist Security Info=True;User ID=*****;Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = xxx.xxx.xxx.xxx)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = xxxxxx)))

 

使用Oracel Provider for Ole Db 先决条件:

安装 Oracel Provider for Ole Db ,下载地址:

 https://www.oracle.com/database/technologies/dotnet-odacdev-downloads.html

 

配置:

ADOConnection.LoginPrompt:=false;

否则每次都会弹出输入密码的对话框来。

delphi7读取ini配置连接oracle10G

 

procedure TForm1.FormCreate(Sender: TObject);
const
  connStr = 'Provider=OraOLEDB.Oracle.1;Password=%s;Persist Security Info=True;User ID=%s;Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = %s)(PORT = %s)))(CONNECT_DATA = (SERVICE_NAME = %s)))';
var
  iniFile: TIniFile;
  ip, port, sid, userName, password, fileName, filePath, conn: string;
begin
  filePath := ExtractFilePath(Paramstr(0));
  fileName := filePath + 'dbConfig.ini';
  if FileExists(fileName) then
  begin
    iniFile := TIniFile.Create(fileName);
    ip := iniFile.ReadString('DataBase', 'ip', '127.0.0.1');
    port := iniFile.ReadString('DataBase', 'port', '1521');
    sid := iniFile.ReadString('DataBase', 'sid', 'orcl');
    userName := iniFile.ReadString('DataBase', 'userName', 'admin');
    password := iniFile.ReadString('DataBase', 'password', 'admin');
    form1.ADOConnection1.ConnectionString := Format(connStr, [password, userName, ip, port, sid]);

    conn := form1.ADOConnection1.ConnectionString;
    OutputDebugString(PAnsiChar(AnsiString(conn)));
  end
  else
    showMessage('没有找到dbConfig.ini文件,请核对!');
end;

 

 

ini文件内容

[DataBase]
ip=127.0.0.1
port=1521
sid=orcl
password=admin
userName=admin

  

//注意点:ExtractFilePath(Paramstr(0) + 'dbConfig.ini');我这里这样写貌似不行,这样得到的结果没有加后面的文件名

https://blog.csdn.net/leandzgc/article/details/7375995

 

===================================================

DBGrid控件显示数据

===================================================

Delphi-TADOQuery连接数据库的增删改查

//查询记录

程序代码
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('select * from YourTABLE where 查询条件');
ADOQuery.Open;



//插入记录

程序代码
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:='insert into YourTABLE(字段1,字段2) values(:字段1,:字段2)';
// ADOQuery.SQL.Add('insert into YourTABLE values(:字段1)');
ADOQuery.Parameters.ParamByName('字段1').Value:=trim(Edit1.Text);
ADOQuery.Parameters.ParamByName('字段2').Value:=trim(Edit2.Text);
ADOQuery.ExecSQL;
end;



//删除记录

程序代码
procedure TForm1.Button3Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:='Delete from YourTABLE where 字段3=:字段3';
//这里没有添加where的条件判断,实际使用时,注意添加判断
// ADOQuery.SQL.Add('Delete from NEW_TABLE where 字段3=:字段3');
ADOQuery.Parameters.ParamByName('字段3').Value:=trim(Edit3.Text);
ADOQuery.ExecSQL;



//删除记录也可用DeleteRecords()函数

procedure DeleteRecords(AffectRecords: TAffectRecords = arAll);   
这个函数有一个参数:AffectRecords可以取如下的值:   
1、arCurrent :删除当前记录   
2、arFiltered :删除符合Filter过滤后的所有记录(如果你使用Filter过滤的话)   
3、arAll          :删除所有记录   
4、arAllChapters :Delete affects all chapters(ADO chapters)

//修改记录

程序代码
procedure TForm1.Button4Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:='Update YourTABLE SET 字段4=:字段4'; 
//这里没有添加where的条件判断,实际使用时,注意添加判断
// ADOQuery.SQL.Add('Update YourTABLE SET 字段4=:字段4');
ADOQuery.Parameters.ParamByName('字段4').Value:=trim(Edit4.Text);
ADOQuery.ExecSQL;



//即时更新插入、删除、修改后的记录

在上面插入、删除、修改的语句后添加如下代码即可:

程序代码
ADOQuery.Close;
ADOQuery.SQL.Add('select * from YourTABLE where 查询条件');
ADOQuery.Open;


//使用ADOQuery时注意:

1、如果你需要更改数据,query.requestlive必须为true 
2、如果有输入参数的时候,容易出错,通常的错法是这样:
比如:“Where abc = : abc”
改正如下:“Where abc=:abc”就是说=:前后都不能留空格。 
3、ADOQuery.Open与ADOQuery.ExecSQL 有不同之处。
ADOQuery.Open一般用在查询,select时候;而ADOQuery.ExecSQL用在insert,delete,update等 

 

https://blog.csdn.net/weixin_34221773/article/details/92374652?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-3.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-3.nonecase

posted @ 2021-02-05 14:18  岭南春  阅读(605)  评论(0)    收藏  举报