2009-11-13 3 views
0

Je suis en train d'obtenir la dernière identité de ma table image.obtenir l'identité dernière de la table

Le code suivant ne fonctionne pas:

SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["DSN"]); 
SqlCommand ident = new SqlCommand("SELECT IDENT_CURRENT(‘image’)", connection); 
connection.Open(); 
id = Convert.ToInt32(ident.ExecuteScalar()); 

J'ai besoin ce de sorte que même si je supprime la dernière ligne que je peux obtenir la dernière identité autogenerated.

Répondre

0

Pour MySQL, votre code ressemble à ça devrait fonctionner. Si la commande ne fonctionne pas, quel message d'erreur recevez-vous?

Pour SQL Server, vous pouvez récupérer la dernière identité produite à partir de la table sys.identity_columns:

select last_value 
where name = 'ColumnName' 
and object_id = object_id('TableName') 
0

Mon application télécharge un fichier sur le serveur et enregistrez-le db et le lier à (GridView avec lien de suppression pour chaque rangée)

Si je last_value je reçois le même dernier identifiant chaque fois que

SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["DSN"]); 
SqlCommand ident = new SqlCommand("select LAST_VALUE where name = 'Id' and object_id = object_id('image')", connection); 
connection.Open(); 
id = Convert.ToInt32(ident.ExecuteScalar()); 

_fileName = fileName; 

_fullFileName = _outputPath + (id + 1).ToString() + prefix + Path.GetFileName(_fileName); 

_fs = new FileStream(_fullFileName, FileMode.Create); 

Mon problème est que whe n J'utilisais MAX(Id) comme ci-dessous, tout allait bien jusqu'à ce que je perds mon identité quand quelqu'un supprime la dernière rangée ou la rangée MAX - c'est pourquoi j'essaye d'obtenir la dernière identité auto-incrémentée et non la dernière valeur de la colonne id

SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["DSN"]); 
SqlCommand ident = new SqlCommand("SELECT MAX(Id) from image", connection); 
connection.Open(); 

SqlDataReader result = ident.ExecuteReader(); 
result.Read(); 

object obValue = result.GetValue(0); 
id = Convert.ToInt32(obValue.ToString()); 

connection.Close(); 
1
SELECT 
SCHEMA_NAME(OBJECTPROPERTY(C.OBJECT_ID, 'SCHEMAID')) AS [SCHEMA NAME], 
OBJECT_NAME(C.OBJECT_ID) AS [TABLE NAME], C.NAME AS [COLUMN NAME], 
T.NAME AS [COLUMN DATA TYPE],SEED_VALUE, 
INCREMENT_VALUE,LAST_VALUE AS CURRENTMAXVALUE 
FROM SYS.IDENTITY_COLUMNS C INNER JOIN SYS.TYPES T ON C.USER_TYPE_ID = T.USER_TYPE_ID 
WHERE COLUMNPROPERTY(OBJECT_ID, C.NAME, 'ISIDENTITY') = 1 
AND LAST_VALUE IS NOT NULL 
ORDER BY LAST_VALUE DESC 
0

SELECT IDENT_CURRENT ('image') - 1

en supposant que vous increamenting par 1

Questions connexes