我正嘗試使用Advantage OLE DB提供程序連接我的數據庫(Advantage 7.1 Server)。到目前爲止好......它連接與下面的代碼沒有問題: -如何通過ADO連接時獲取AUTOINC值?
const
// the database we'll be connecting to
ConnectionString = 'Provider=Advantage OLE DB Provider;Data Source=C:\Data\'+
'UsersData.add;ServerType=ADS_REMOTE_SERVER|ADS_LOCAL_SERVER;User ID=ISUsers;Password=aAoO31';
我的問題是,即使我能夠爲數據類型做任何領域與AUTOINC連接到數據庫,不會生成下一個數字。隨着AUTOINC的「ID」在我追加數據而不是移動到下一個數字1,2,3時保持爲零(0)。但是,如果我切換到MS ACCESS,則相同的代碼可以很好地工作。我究竟做錯了什麼?請在下面找到代碼。
// Add template to database. Returns added template ID.
function TDBClass.addTemplate(template: TTemplate): Integer;
var
rs: TADODataSet;
tptStream: TMemoryStream;
id: Integer;
p: PChar;
begin
// get DB data and append one row
rs := TADODataSet.Create(nil);
rs.Connection := connection;
rs.CursorType := ctStatic;
rs.LockType := ltOptimistic;
rs.CommandText := 'SELECT * FROM enroll';
rs.Open();
rs.Append();
tptStream := TMemoryStream.Create();
// write template data to memory stream.
SafeArrayAccessData(template.tpt, Pointer(p));
tptStream.write(p^, template.size);
SafeArrayUnaccessData(template.tpt);
// save template data from memory stream to database.
(rs.FieldByName('template') as TBlobField).LoadFromStream(tptStream);
// update the database with added template.
rs.post();
// get the ID of enrolled template.
id := rs.FieldByName('ID').AsInteger;
// close connection
tptStream.Free();
rs.Close();
rs.Free();
addTemplate := id;
end;
我不熟悉的優勢和這個職位是比較舊:http://devzone.advantagedatabase.com/dz/Content.aspx?Key=17&RefNo=030606-1534 – bummi