अपनी तालिका में नया रिकॉर्ड जोड़ने के लिए सही सिंटैक्स होना चाहिए
Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _
"VALUES (@Id_presence,@Id,@Hours,@Date)"
और, निश्चित रूप से, प्रत्येक कमांड को निष्पादित किया जाना चाहिए अन्यथा यह कोड की एक बेकार पंक्ति है।
आप पैरामीटर के निर्माण के बाद इस लाइन को याद कर रहे हैं।
SQLcmd.ExecuteNonQuery()
आपकी छवि से सुनिश्चित होना संभव नहीं है, लेकिन यदि idpresence एक AUTOINCREMENT फ़ील्ड है, तो आपको अपने कमांड और पैरामीटर के साथ इसका मान सेट करने का प्रयास नहीं करना चाहिए, लेकिन डेटाबेस को आपके लिए ऐसा करने दें। (यदि एक से अधिक उपयोगकर्ता एक ही समय में रिकॉर्ड सम्मिलित करते हैं, तो डुप्लीकेट कुंजियों की समस्या उत्पन्न हो सकती है)
आखिरी बात के रूप में, आपके पैरामीटर का प्रकार निर्दिष्ट नहीं है, इसलिए वे अंतर्निहित डेटाटेबल स्कीमा से मेल नहीं खाते हैं। आप AddWithValue का उपयोग कर सकते हैं और इनपुट टेक्स्टबॉक्स मानों को सही डेटाबेस प्रकार में परिवर्तित कर सकते हैं
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))