2010-02-09 7 views
6

मैं अपने वीबी.NET एप्लिकेशन के बैकएंड के रूप में एक एमएस एक्सेस डेटाबेस का उपयोग कर रहा हूं। मैं बयान में एक सम्मिलित करें का उपयोग कर डेटाबेस में उपयोगकर्ताओं का विवरण दर्ज कर रहा हूँ:जांच कर रहा है कि INSERT INTO कथन सफल रहा था

cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & config("DatabasePath") & ";") 
cn.Open() 
cmd = New OleDbCommand("INSERT INTO blah blah blah...", cn) 
dr = cmd.ExecuteReader 

सब कुछ काम करता है, लेकिन मैं अगर डेटा वास्तव में डेटाबेस में दर्ज किया गया जाँच करना चाहता था। मैंने इसका उपयोग करने का प्रयास किया है:

cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & config("DatabasePath") & ";") 
cn.Open() 
cmd = New OleDbCommand("INSERT INTO blah blah blah...", cn) 
dr = cmd.ExecuteReader 
If dr.Read() Then 
    ' Blah 
End If 

लेकिन स्पष्ट रूप से सम्मिलित कथन कुछ भी वापस नहीं करता है, इसलिए यह काम नहीं करता है। कोई सुझाव?

उत्तर

8

यदि आपके पास INSERT कथन है तो आप ExecuteNonQuery() विधि का उपयोग कर सकते हैं जो दर्शाता है कि कितनी पंक्तियां प्रभावित हुईं।

इस तरह

:

cmd = New OleDbCommand("INSERT INTO blah blah...", cn) 
rowCount = cmd.ExecuteNonQuery() 
If rowCount < 1 Then 
    ' Blah 

अगर वीबी सही नहीं है आप मुझे क्षमा करने के लिए है, मैं इसे परीक्षण नहीं किया था, लेकिन मुझे आशा है कि आप विचार मिलता है।

+0

बस जो मैं खोज रहा था, धन्यवाद! :) – Dox

0

क्या आप उसी कुंजी मानदंड का उपयोग कर SELECT COUNT(*) FROM blah blah blah चला सकते हैं जैसा आपने डालने के लिए उपयोग किया था?

+0

यही मैंने पहली बार सोचा था। समस्या यह है कि एक ही पंक्ति में से एक से अधिक होने जा रहे हैं, इसलिए जब तक मैं डुप्लिकेट पंक्तियों की मात्रा नहीं रखता, यह बहुत व्यवहार्य नहीं है। इसके अलावा मैं जितना संभव हो सके अपने डेटाबेस प्रश्नों को कम करना चाहता हूं :) – Dox

0

ExecuteNonQuery विधि का उपयोग करें, क्योंकि क्वेरी कोई परिणाम नहीं लौटाती है। विधि एक पूर्णांक देता है जो प्रभावित पंक्तियों की संख्या है।

Dim count As Integer = cmd.ExecuteNonQuery() 
संबंधित मुद्दे