不太明白在动态链接库中如何对数据库进行操作
最好有详细资料和例子,有用资料至少给50分,不够再开贴!

解决方案 »

  1.   

    使用BDE的一个例子,看看:
    Function DllQuery(const Param,QueryPara:PChar):Integer; export;
    var
      DataBase1:TDataBase;
      Query:TQuery;  ODBCName,UserName,PassWord,:String;
      first,loca:Integer;
    begin
      Result:=1;
      ParaStr:=Param;
      loca:=0;
      first:=loca+1;
      loca:=Pos(';',Copy(ParaStr,first,Length(ParaStr)-first+1));
      if loca<>0 then
        begin
          ODBCName:=Copy(ParaStr,first,Loca-1);
          first:=first+loca;
        end;
      loca:=Pos(';',Copy(ParaStr,first,Length(ParaStr)-first+1));
      if loca<>0 then
        begin
          UserName:=Copy(ParaStr,first,Loca-1);
          first:=first+loca;
        end;
      loca:=Pos(';',Copy(ParaStr,first,Length(ParaStr)-first+1));
      if loca<>0 then
        begin
          PassWord:=Copy(ParaStr,first,Loca-1);
          first:=first+loca;
        end;
        DataBase1:=TDataBase.Create(nil);
        Query:=TQuery.Create(nil);
        with DataBase1 do
          begin
            Params.Clear;
            Params.Add('DataBase1 NAME=');
            Params.Add('USER NAME='+UserName);
            Params.Add('ODBC DSN='+ODBCName);
            Params.Add('OPEN MODE=READ/WRITE');
            Params.Add('BATCH COUNT=200');
            Params.Add('LANGDRIVER=');
            Params.Add('MAX ROWS=-1');
            Params.Add('SCHEMA CACHE DIR=');
            Params.Add('SCHEMA CACHE SIZE=8');
            Params.Add('SCHEMA CACHE TIME=-1');
            Params.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
            Params.Add('SQLQRYMODE=SERVER');
            Params.Add('ENABLE SCHEMA CACHE=FALSE');
            Params.Add('ENABLE BCD=FALSE');
            Params.Add('ROWSET SIZE=20');
            Params.Add('BLOBS TO CACHE=2048');
            Params.Add('BLOB SIZE=2048');
            Params.Add('PASSWORD='+PASSWORD);
            KeepConnection := False;
            LoginPrompt := FALSE;
            DataBaseName:=ODBCName;
          end;    with Query do
          begin
            DataBaseName:=DataBase1.DatabaseName;
            Close;
            SQL.Clear;
            SQL.Add(QueryPara);
            try
              ExecSQL;
            except
            end;
          end;
        try
          DataBase1.Destroy;
        except
        end;
        try
          Query.Destroy;
        except
        end;
        Result:=0;
      except
        try
          DataBase1.Destroy;
        except
        end;
        try
          Query.Destroy;
        except
        end;
      end;
    end;