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连接数据库的增删改查
//查询记录
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('select * from YourTABLE where 查询条件');
ADOQuery.Open;
//插入记录
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;
//删除记录
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)
//修改记录
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.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等
浙公网安备 33010602011771号