我是SQL和SQL Server的初学者。我有一个有2列的表。
CREATE TABLE [dbo].[Log](
[FileName] [varchar](100) NOT NULL,
[FileID] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Log] PRIMARY KEY CLUSTERED
(
[FileID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
因此,如果我向Filename插入一个字符串,则会自动生成FileID。它可以在SQL Studio中正常工作,但不能从代码中工作。
function TfrmMainForm.SaveFileNameToDB(const aName: String): Integer;
var
vResult: Variant;
begin
SQLQuery.Close;
SQLQuery.SQL.Text := Format('INSERT INTO Log (FileName) VALUES(''%s'')', [aName]);
SQLQuery.ExecSQL;
SQLQuery.Close;
SQLQuery.SQL.Text := Format('SELECT FileID FROM Log WHERE FileName = ''%s''', [aName]);
SQLQuery.Open;
SQLQuery.First;
vResult := SQLQuery.FieldValues['FileID'];
if VarIsNull(vResult) then
Result := -1
else
Result := vResult;
end;
此方法的结果始终为-1。这有什么不对?