您好我正在尝试使用Delphi XE7将值写入MSSQL快速数据库。 我来自oracle背景并使用此命令:
PRISMProject.frmMain.ADODataSet2.CommandText :=
'INSERT INTO matter VALUES (Desc,IntRef,InvRef,Cost,MType,AccMan);';
问题是表名。 你能告诉我将值插入MSSQL数据库的语法吗? 感谢
整个程序:
procedure TfrmMatter.btnSaveClick(Sender: TObject);
var Desc, MType, AccMan : string;
IntRef, InvRef : integer;
Cost : double;
begin
Desc := edtDesc.Text;
edtDesc.Clear;
MType := edtType.Text;
edtType.Clear;
AccMan := edtAcc.Text;
edtAcc.Clear;
if edtIntRef.Text <> '' then
IntRef := StrToInt(edtIntRef.Text)
else
IntRef := 0;
edtIntRef.Clear;
if edtInvRef.Text <> '' then
InvRef := StrToInt(edtInvRef.Text)
else
InvRef := 0;
edtInvRef.Clear;
if edtCost.Text <> '' then
Cost := StrToFloat(edtCost.Text)
else
Cost := 0;
edtCost.Clear;
PRISMProject.frmMain.ADODataSet2.Close;
PRISMProject.frmMain.ADODataSet2.CommandText :=
'GO INSERT INTO PRISM.matter VALUES (Desc,IntRef,InvRef,Cost,MType,AccMan)';
PRISMProject.frmMain.ClientDataSet2.Open;
PRISMProject.frmMain.ClientDataSet2.Refresh;
lblConfirm.Caption := 'Matter saved successfully';
edtDesc.SetFocus;
end;
答案 0 :(得分:4)
您正试图在SQL语句中嵌入变量,这将永远不会奏效。一旦它们在引号之间,它们就不再是变量;它们只是简单地嵌入在SQL语句中的文本。
您需要使用参数,并将值分配给这些参数:
ADODataSet2.CommandText :=
'INSERT INTO matter VALUES (:Desc, :IntRef, :InvRef, :Cost, :MType,:AccMan);';
ADODataSet2.Parameters.ParamByName('Desc').Value := Desc;
ADODataSet2.Parameters.ParamByName('IntRef').Value := IntRef;
ADODataSet2.Parameters.ParamByName('Cost').Value := Cost;
// etc. for the rest of the parameters and values
说了这么多,你就是在艰难地做事。 TADODataSet
直接支持Insert
和Append
,因此您根本不需要SQL语句。
ADODataSet2.Insert;
ADODataSet2.FieldByName('Desc').Value := Desc;
ADODataSet2.FieldByName('IntRef').Value := IntRef;
ADODataSet2.FieldByName('Cost').Value := Cost;
// etc for remaining fields
ADODataSet2.Post;
答案 1 :(得分:2)
以下是有关如何插入的MSDN文档:
https://msdn.microsoft.com/en-us/library/ms174335.aspx
这是另一篇文章,其中有一些插入示例,如果上面的文档有点过于技术性。其中一个应该涵盖你想要做的事情。
https://technet.microsoft.com/en-us/library/dd776381(v=sql.105).aspx
我要提到的另一件事是你必须引用数据库中的表,而不仅仅是数据库。所以你的插页靠近正确的轨道,但它更接近
insert into matter.<schema>.<tableName> (desc, intref, invref, cost, mtype, accman)
...