在Access里做INSERT时的Parameter问题(50分)

  • 主题发起人 主题发起人 firstrose
  • 开始时间 开始时间
F

firstrose

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用Parameters在 access里做insert,但是一直出错说insert into的语法错误。下面是代码
DiscRecord=Record
CDName:String;
CDType:String;
CDNote:String;
Index:String;
Note:String;
End;
var
SQLQuery:TADOQuery;



Function NewDisc(P:DiscRecord):Boolean;

.............

SQLQuery.SQL.Clear;
SQLQuery.SQL.Add('INSERT INTO CDList (CDName,CDType,CDNote,Index,Note) VALUES (:CDName,:CDType,:CDNote,:Index,:Note)');

SQLQuery.Parameters.ParamByName('CDName').DataType:=ftString;
SQLQuery.Parameters.ParamByName('CDType').DataType:=ftString;
SQLQuery.Parameters.ParamByName('CDNote').DataType:=ftString;
SQLQuery.Parameters.ParamByName('Index').DataType:=ftString;
SQLQuery.Parameters.ParamByName('Note').DataType:=ftString;

SQLQuery.Parameters.ParamByName('CDName').Value:=P.CDName;
SQLQuery.Parameters.ParamByName('CDType').Value:=P.CDType;
SQLQuery.Parameters.ParamByName('CDNote').Value:=P.CDNote;
SQLQuery.Parameters.ParamByName('Index').Value:=P.Index;
SQLQuery.Parameters.ParamByName('Note').Value:=P.Note;

SQLQuery.ExecSQL;
 
是不是应该定义P为指针,它指向DisRecord ?
 
就算把p.xxx全部用静态字符串代替都一样的。
 
var
SQLQuery:TADOQuery;
声明之后,有没有创建这个组件:
SQLQuery := TADOQuery.Create(nil);

//================================
SQLQuery.Parameters.ParamByName('CDName').DataType:=ftString;
SQLQuery.Parameters.ParamByName('CDType').DataType:=ftString;
SQLQuery.Parameters.ParamByName('CDNote').DataType:=ftString;
SQLQuery.Parameters.ParamByName('Index').DataType:=ftString;
SQLQuery.Parameters.ParamByName('Note').DataType:=ftString;
//=====================
上面这一堆,不用也可。
 
当然有,否则就是报Access Violation
 
SQLQuery.SQL.Add('INSERT INTO CDList (CDName,CDType,CDNote,[Index],[Note]) VALUES (:CDName,:CDType,:CDNote,:Index,:Note)');
Index肯定是关键字,Note可能是保留字,都用[]引用
 
有没有adoconnection啊
 
to:dcs_dcs
当然有

to:轻舞肥羊
谢谢,没想到居然会忽略了这个!
 
后退
顶部