Read answers on SO regarding similar Q's and tried a few out but to no joy. Using PostGresql I want to add a record to the table and record the value in the 'id' column of that record.
Tried currval, and RETURNING...crashes on Id = int.Parse(sqlcmd.ExecuteScalar().ToString());
Any ideas on what I am doing wrong?
try
{
StringBuilder command = new StringBuilder();
command.Append("resultId BIGINT");
command.Append("INSERT INTO image_table (\"id\", \"table_name\", \"file_name\", \"image_data\", \"creation_date\") ");
command.Append("VALUES ('" + ID + "', '" + tableName + "', '" + fileName + "', @Image, (SELECT LOCALTIMESTAMP))");
command.Append("RETURNING id INTO resultId;");
//command.Append("SELECT currval('id');");
//command.Append("RETURNING id;");
//command.Append("SELECT @@IDENTITY");
using (NpgsqlCommand sqlcmd = CreateTextCommand(command.ToString(), connectionDataString))
{
sqlcmd.Parameters.AddWithValue("@Image", imageAsBytes);
Id = int.Parse(sqlcmd.ExecuteScalar().ToString());
}
}
catch (Exception ex)
{
throw (ex);
}
finally
{
CloseConnection();
}
return Id;
}
Please see Get the last insert id from : http://www.postgresqltutorial.com/postgresql-insert/
isn't this what I am doing?
Update I got it using
K command.Append("INSERT INTO image_table (\"id\", \"table_name\", \"file_name\", \"image_data\", \"creation_date\") ");
command.Append("VALUES ('" + ID + "', '" + tableName + "', '" + fileName + "', @Image, (SELECT LOCALTIMESTAMP))");
command.Append("RETURNING id;");
using (NpgsqlCommand sqlcmd = CreateTextCommand(command.ToString(), connectionDataString))
{
sqlcmd.Parameters.AddWithValue("@Image", imageAsBytes);
Id = int.Parse(sqlcmd.ExecuteScalar().ToString());
}