没有弄过delphi,明天要交一个东西,55~~
要求如下,将几个string还有date类型以及一个已经存在的bmp文件存入oracle10数据库,变量已经取得,只要做连接还有插入以及一个主键的判断(假设变量id)就ok,搞了半天实在没有办法了,求高手帮助。

解决方案 »

  1.   

    还有bmp的图片对应表中的blog类型字段。
      

  2.   

    给你个例子:自己看
    function TfrmSbManager.InsertSbTb: Boolean;
    var
    sqltext : string;
    begin
       //添加设备
       sqltext := '';
       Memo1.Lines.SaveToFile('c:\tempMemo.txt');
       with dtmd.qyinsertsb do
       begin
         Close;
         SQL.Clear;     if PicterFilename <> '' then
         begin
           SQL.Add('insert into sbtb(sbid,sbname,gmdate,dj,sl,fpsl,cjname,cfdb,tel,bz,tp)');
           SQL.Add('values(:#sbid,:#sbname,:#gmdate,:#dj,:#sl,:#fpsl,:#cjname,:#cfdb,:#tel,:#bz,:#tp)');
         end else begin
           SQL.Add('insert into sbtb(sbid,sbname,gmdate,dj,sl,fpsl,cjname,cfdb,tel,bz)');
           //
           SQL.Add('values(:#sbid,:#sbname,:#gmdate,:#dj,:#sl,:#fpsl,:#cjname,:#cfdb,:#tel,:#bz)');
           //  
         end;
         Parameters.ParamByName('#sbid').Value := Trim(edSbid.Text);//字符类型
         Parameters.ParamByName('#sbname').Value := Trim(edSbname.Text);
         Parameters.ParamByName('#gmdate').Value := FormatDateTime('yyyy-mm-dd',dtpkGmrq.Date);//日期时间类型
         Parameters.ParamByName('#dj').Value := StrToFloat(edDj.Text);
         Parameters.ParamByName('#sl').Value := StrToFloat(EdSl.Text);//浮点类型
         Parameters.ParamByName('#fpsl').Value := 0;
         Parameters.ParamByName('#cjname').Value := Trim(edCj.Text);
         Parameters.ParamByName('#cfdb').Value := Trim(edDb.Text);
         Parameters.ParamByName('#tel').Value := Trim(edTel.Text);
       //  Parameters.ParamByName('#memo').DataType := ftMemo;
         Parameters.ParamByName('#bz').Value := Memo1.Text;
         if PicterFilename <> '' then
           Parameters.ParamByName('#tp').LoadFromFile(PicterFilename,ftBlob);//图片
         try
           ExecSQL;
           Result := true;
         except
           Result := false;
         end;   end;
    end;
      

  3.   

    上面的代码没有对重复主建的判断,所以不能。。连接用ADOCONNECTION组件,直接用QUERY组件设置connectionstring属性也可以
      

  4.   

    begin
        SQLQuery1.SQL.Text := 'select * from memberinfo';
        SQLQuery1.Append;
        SQLQuery1.Close;
        try
        SQLQuery1.FieldByName('MEMBER_NAME').AsString := name;
        if (sex <> '')then
        SQLQuery1.FieldByName('SEX').AsInteger := StrToInt(sex);
        SQLQuery1.FieldByName('NATION').AsString := nation;
        SQLQuery1.FieldByName('BIRTH').AsString := birthday;
        SQLQuery1.FieldByName('PLACE').AsString := place;
        SQLQuery1.FieldByName('MEMBER_ID').AsString := ID;
        SQLQuery1.FieldByName('POLICE').AsString := police;
        SQLQuery1.FieldByName('MEMBER_VALIDATE').AsString := validDate;
        SQLQuery1.Post;
        except
          showmessage('数据库中已经存在该用户信息');
        end;
      end;
      

  5.   

    这个是用query实现的,如果用上面的方式,那么把query全部改成adotable试一下吧。 
    如果用query组件,那么最好用sql语句添加
      

  6.   

    用ADOTABLE实现如下:首先你要在窗体上添加一个ADOTABLE,名字默认的adotable1,然后设置连接字符串,连接数据库,如果连接成功,那么用下面的代码完成需求:
        with ADOTable1 do
        begin
           if not Active then Open;
           if not Locate('MEMBER_NAME',Name,loCaseInsensitive) then //这里判断是否存在name用户
           begin     //如果不存在name用户,则添加记录
             Insert;
             FieldByName('MEMBER_NAME').AsString := name;
             FieldByName('SEX').AsInteger := StrToInt(sex);
             FieldByName('NATION').AsString := nation;
             FieldByName('BIRTH').AsString := birthday;
             FieldByName('PLACE').AsString := place;
             FieldByName('MEMBER_ID').AsString := ID;
             FieldByName('POLICE').AsString := police;
             FieldByName('MEMBER_VALIDATE').AsString := validDate;
             try
               Post;
             except
               showmessage('数据库添加失败');
             end;
           end else showmessage('此用户已存在');    end;