J'essaie d'insérer des données dans MS SQL Server 2008 en utilisant Ole DB. ma procédure d'insertion est:OLE DB Bind() Invoke Assert lors de l'insertion de lignes
ALTER PROCEDURE [dbo].[table_insert]
@category as bigint
AS
BEGIN
INSERT INTO dbo.table
(category)
VALUES(@category)
SELECT SCOPE_IDENTITY() as id;
END
Lorsque j'appelle la procédure, elle est exécutée correctement. Nouvelle ligne est insérée. J'utilise accesseur pour obtenir de nouvelles id ligne:
class DCCRetValueAccessor
{
public:
__int64 id;
BEGIN_COLUMN_MAP(DCCRetValueAccessor)
COLUMN_ENTRY(1, id)
END_COLUMN_MAP()
void ClearRecord()
{
memset(this, 0, sizeof(*this));
}
};
Pour exécuter la procédure et obtenir de nouvelles id ligne J'utilise ce code:
CString cmd;
__int64 newID = -1;
cmd.Format(_T("EXEC [dbo].[alert_settings_insert] @category=%I64d"), value->category);
CCommand<CAccessor<DCCRetValueAccessor>> command;
if(DC_SUCCEEDED(command.Open(m_session, cmd)))
{
if(command.MoveFirst() == S_OK)
{
newID = command.id;
}
else
return -1;
}
else
{
LogError();
return -1;
}
return newID;
Le problème est que je reçois VALOIR erreur dans la méthode bind() après avoir appelé GetInterface() dans atldbcli.h, Line: 6108, expression: GetInterface()! = 0.
Je ne peux pas voir l'erreur. Pouvez-vous m'aider s'il vous plaît? Merci