cross check with database that row is actually inserted or not because ExecuteNonQuery()
method will return number of rows affected so it should be 1 if one row is inserted properly and you are displaying message 'not inserted' if eff is other than 0.
set breakpoint at
int eff = cm.ExecuteNonQuery();
find the value of eff and modify code accordingly.
Also verify your connection string.
Data Source=C:\application\application.sdf;Persist Security Info=False;
this is standard connection string for sql server compact.
--
Thanks