Správná syntaxe pro přidání NOVÉHO záznamu do vaší tabulky by měla být
Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _
"VALUES (@Id_presence,@Id,@Hours,@Date)"
A samozřejmě každý příkaz by měl být proveden, jinak jsou to jen zbytečné řádky kódu.
Po vytvoření parametrů vám tento řádek chybí.
SQLcmd.ExecuteNonQuery()
Z vašeho obrázku si nelze být jisti, ale pokud je idpresence pole AUTOINCREMENT, pak byste se neměli pokoušet nastavit jeho hodnotu pomocí příkazu a parametru, ale nechat databázi, aby to udělala za vás. (Pokud záznamy vkládá více uživatelů současně, mohou nastat problémy s duplicitními klíči)
Jako poslední věc není specifikován typ vašich parametrů, takže neodpovídají základnímu schématu datatable. Můžete použít AddWithValue a převést hodnoty vstupního textového pole na správný typ databáze
SQLcmd.Parameters.AddWithValue("@Id_presence", Convert.ToInt32(TextBox1.Text))
SQLcmd.Parameters.AddWithValue("@Id", Convert.ToInt32(TextBox2.Text))
SQLcmd.Parameters.AddWithValue("@Hours", Convert.ToInt32(TextBox3.Text))
SQLcmd.Parameters.AddWithValue("@Date", Convert.ToDateTime(TextBox4.Text))