Sintaks yang benar untuk menambahkan catatan BARU ke tabel Anda seharusnya
Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _
"VALUES (@Id_presence,@Id,@Hours,@Date)"
Dan, tentu saja, setiap perintah harus dijalankan jika tidak, itu hanya baris kode yang tidak berguna.
Anda melewatkan baris ini setelah pembuatan parameter.
SQLcmd.ExecuteNonQuery()
Dari gambar Anda tidak mungkin untuk memastikan, tetapi jika idpresence adalah bidang AUTOINCREMENT, maka Anda tidak boleh mencoba mengatur nilainya dengan perintah dan parameter Anda tetapi biarkan database melakukannya untuk Anda. (Masalah kunci duplikat dapat muncul jika lebih dari satu pengguna menyisipkan catatan pada saat yang sama)
Sebagai hal terakhir, jenis parameter Anda tidak ditentukan sehingga tidak cocok dengan skema datatable yang mendasarinya. Anda dapat menggunakan AddWithValue dan mengonversi nilai kotak teks input ke tipe database yang benar
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))