delphi中操作access 数据库 Insert,Update的一些情况

procedure TFormPatientTemplate.ButtonSaveClick(Sender: TObject);
var
  FileStream: TFileStream; {to load the odt file}
  BlobStream: TStream;//TBlobStream; {to save to the blob}
  SQLString : string;
  arr : OleVariant;
  memo : TMemoryStream;
  i :Integer;
begin
if Trim(Edit1.Text) = '' then
begin
ShowMessage('请输入病历名称!');
Edit1.SetFocus;
end
else
begin
  NsoControl1.SaveToStream(arr);
  memo := OleVariantToMemoryStream(arr);
  i := memo.Size;
  if memo.Size = 0 then
    exit;
{Create a BlobStream for the field}
if iRecordID = 0 then //新建的病历
begin
  with ADOQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add( 'insert into 病人病历信息表 (病人ID,模板ID,病历名称,病历内容,最后修改日期) values(:1,:2,:3,:Blob,:5)');
      parameters.ParamByName('1').Value := iPatientID;
      parameters.ParamByName('2').Value := iTemplateID;
      parameters.ParamByName('3').Value := Trim(Edit1.Text);
      parameters.ParamByName('Blob').LoadFromStream(memo,ftBlob);
      parameters.ParamByName('5').Value := now;
      execsql;
    end;
    memo.Free;
end
else        //修改的病历
.......
end;
这个地方由于插入的字段有一个是Blob字段所以觉得有些特殊,拿出来作日后参考

更新数据库的代码:
procedure TFormPatientTemplate.Button1Click(Sender: TObject);
var
  xmlString : string;
  xml_document:IXMLDOMDocument;
  newctrl_list : IXMLDOMNodeList;
  newctrl_node : IXMLDOMNode;
  newLen : Integer;
  i : Integer;
  strtemp:string;
  strName : string;
  strMarry :string;
  strSQL :string;
begin

   xml_document := CoDOMDocument.create;
   xml_document.loadXML(NsoControl1.GetAllSectAndNewCtrlContentByCurrentDoc('0,1,2','0,1',1,1));
   newctrl_list := xml_document.getElementsByTagName('NewCtrl');
   newlen :=  newctrl_list.length;
   for i := 0 to newlen-1 do
   begin
      newctrl_node := newctrl_list.item[i];
      strtemp := newctrl_node.childNodes.item[0].text;
      if  strtemp = '6' then
          strName :=  newctrl_node.childNodes.item[1].text;
      if  strtemp = '23' then
          strMarry :=  newctrl_node.childNodes.item[1].text;
      if ( strName <> '') and ( strMarry <> '') then
          break;
   end;
   strSQL := 'update 病人信息表 set 婚姻状况 = '' +strMarry +''where 姓名 = ''+strName + ''';
   with ADOQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('update 病人信息表 set 婚姻状况 = :strMarry where 姓名 = :strName ');
      parameters.ParamByName('strMarry').Value :=  strMarry;
      parameters.ParamByName('strName').Value :=  strName;
      execsql;
    end;
end;
这个地方拿出来是因为,这个SQL语句在开始写的时候不知道:strMarry这种表示,这种表示的确很明智,单独拿出来赋值,免去字符串的拼凑(delphi是''表示字符串的)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值