2012-06-22 13 views
7

मैं पाठ बॉक्स मान को संपादित करने के लिए जा रहा हूँ .. लेकिन मैं एक समस्या है देखानाम 'sqlDbType' वर्तमान संदर्भ में मौजूद नहीं है

protected void btn_edit_Click(object sender, EventArgs e) 
    { 
     DatabaseConnector con = new DatabaseConnector().CreateInstance(); 
     SqlCommand com = new SqlCommand("UPDATE tbl_BinCardManager SET ItemName = @ItemName WHERE ItemNo = @ItemNo"); 
     com.Parameters.Add("@ItemName",sqlDbType.VarChar); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

    } 

त्रुटि 1:

नाम ' sqlDbType 'वर्तमान संदर्भ में मौजूद नहीं है

त्रुटि 2:

'ERPSystem.DatabaseConnector' में 'ओपन' की परिभाषा नहीं है और 'ERPSystem.DatabaseConnector' के पहले तर्क को स्वीकार करने वाली कोई भी एक्सटेंशन विधि 'ओपन' नहीं मिल सकती है (क्या आप निर्देश या एक असेंबली संदर्भ का उपयोग कर रहे हैं ?)

मेरे DBConnector क्लास है:

class DatabaseConnector 
{ 
    private DatabaseConnector databaseConnector; 
    private string connectionString = "Data Source=lernlap;Initial Catalog=ERPSystemDB;User ID=sa;Password=sa123"; 

    public DatabaseConnector() 
    { 

    } 

    private SqlConnection connection; 

    private bool Connect() 
    { 
     try 
     { 
      connection = new SqlConnection(connectionString); 
      connection.Open(); 
      return true; 
     } 
     catch(Exception) { 

      return false; 

     } 
    } 

    internal DatabaseConnector CreateInstance() 
    { 
     if (databaseConnector == null) 
     { 
      databaseConnector = new DatabaseConnector(); 
      databaseConnector.Connect(); 
     } 
     return databaseConnector; 
    } 
+2

सी # केस संवेदनशील है। –

+0

हां, लेकिन कोई भी केस संवेदनशीलता समस्या नहीं है – Learner

+3

एसक्यूएलडीबी टाइप - आपके पास कम केस एस – javajavajava

उत्तर

12

सी # केस सेंसिटिव है ... इंटेलिजेंस का उपयोग करने का प्रयास करें।

SqlDbType 

यदि आप पहले को सही करते हैं तो अन्य त्रुटियां गायब हो सकती हैं।


एक तरफ ध्यान दें, आप उचित संसाधन हैंडलिंग के बिना कनेक्शन/मेमोरी लीक में भागने जा रहे हैं। निजी तौर पर, मैं संकट से बचने के लिए using कथन का उपयोग करता हूं।

मैं पूरी तरह से निश्चित नहीं हूं कि "डेटाबेस कनेक्टर" आपकी खुद की कक्षा संभव है, लेकिन संभवतः आपको SqlConnection का उपयोग करना चाहिए, या संभवतः SqlDatabase

अद्यतन: मुझे यकीन नहीं है कि क्या डीबीसी कनेक्टर वर्ग को सिंगलटन या फैक्ट्री या दोनों होना चाहिए - इसलिए मैंने इसका उपयोग करने से बचने के लिए बस अपना जवाब सरल बना दिया। आप जिस पैटर्न को ढूंढ रहे हैं उसे बनाने और डीबीसी कनेक्टर क्लास प्रदान करने के तरीके के बारे में विस्तार से एक और प्रश्न पूछें। मुझे लगता है कि यह करने योग्य है, लेकिन मेरे पास आपके पास जो कुछ है उसे ठीक करने के लिए पर्याप्त जानकारी नहीं है।

public static CONN_STR = "Data Source=lernlap;Initial Catalog=ERPSystemDB;User ID=sa;Password=sa123"; 

    protected void btn_edit_Click(object sender, EventArgs e) 
    { 
     using(SqlConnection con = new SqlConnection(CONN_STR)) 
     { 
      con.Open(); 

      using(SqlCommand cmd = new SqlCommand("UPDATE tbl_BinCardManager SET ItemName = @ItemName WHERE ItemNo = @ItemNo"), con) 
      { 

      // TODO: fill in param values with real values 
      cmd.Parameters.AddWithValue("@ItemName", "my item name"); 
      cmd.Parameters.AddWithValue("@ItemNo", 1); 

      cmd.ExecuteNonQuery(); 
      } 
     } 
    } 
+0

एक और बात उस कोड में है जो con.Open() और con.close() लाल रेखांकित है। जब मैं कर्सर डालता हूं तब मैंने मेथोस स्टब बनाएं। (तब मैंने देखा कि डीबी कनेक्टर क्लास में बनाया गया है) वह क्यों है? – Learner

+1

डाटाबेस कनेक्टर वास्तव में क्या है? आपकी अपनी कक्षा? –

+1

@ChrisGessler - अगर मुझे लगता है कि यह अनुमान लगाया गया था तो यह इस कोड से आधारित था: http://www.codeproject.com/Articles/32909/Database- कनेक्टर –

7

SqlDbType रों पूंजीकृत होने की जरूरत है!

2

आपके पास और त्रुटियां हैं।

  • जिस तरह से आप इसका इस्तेमाल के आधार पर, मुझे लगता है कि तुम्हारा मतलब SqlConnectionDatabaseConnector के बजाय
  • आप एक SqlCommand com नामित बनाने के लिए, लेकिन के रूप में cmd
  • यह उल्लेख करने के लिए आप के लिए SqlConnection आवंटित करने के लिए की आवश्यकता होगी SqlCommand, या यह नहीं पता होगा कि कौन सा कनेक्शन खोलना है।
  • आप केवल SQLCommand को 1 पैरामीटर प्रदान करते हैं, जबकि क्वेरी को दो (ItemNo के साथ-साथ ItemName) की आवश्यकता होती है।

संपादित करें, अपने नए स्रोत के आधार पर:

  • त्रुटि "DatabaseConnector ओपन '' के लिए एक परिभाषा शामिल नहीं है '" con.Connect() बजाय con.Open() लिख कर ठीक किया जा सकता।
  • हालांकि, दूसरी त्रुटि, कि इसमें "बंद()" फ़ंक्शन नहीं है, को ठीक नहीं किया जा सकता है - कनेक्शन बंद करने के लिए इसे बताने का कोई तरीका नहीं है।

क्या यह आपका खुद का कोड है?

+0

हाँ यह मेरा कोड है – Learner

+0

फिर इसमें एक फ़ंक्शन जोड़ें जो कनेक्शन बंद कर सकते हैं। या बस पूरे डेटाबेस कनेक्टर को फेंक दें और सीधे SQLLonnection का उपयोग करें। –

+0

जब मैं डेटाबेस कनेक्टर में अपने कनेक्शनस्ट्रिंग को भी नुकसान पहुंचाता है? – Learner

1

क्या आप The Code Project द्वारा बनाई गई कक्षा का उपयोग कर रहे हैं?

ठीक है, मुझे लगता है कि त्रुटि इसलिए है क्योंकि कनेक्शन स्ट्रिंग। कनेक्शन स्ट्रिंग कक्षा ओबीबीसीडेटाबेस कनेक्टर में होना चाहिए। खैर, मैंने कोड प्रोजेक्ट के इस वर्ग का कभी भी उपयोग नहीं किया, लेकिन यह हो सकता है।

+0

मैं एसक्यूएल डेटाबेस कनेक्टर का उपयोग कर रहा हूँ – Learner

3
yes but theres no any case sensitivity problem know 

आप वास्तव में सिंटैक्स त्रुटि है क्योंकि आप s बजाय S इस्तेमाल किया। इसके अलावा SqlCommand एक विधि Open() कहा जाता है और न ही यह Close()

के लिए एक तुम SqlConnection का उपयोग करना चाहिए है नहीं है, क्योंकि यह तरीकों Open() और Close() होता है और खोलने के लिए SqlConnection के अपने उदाहरण के लिए SqlCommand के Connection गुण सेट और अपने डेटाबेस से कनेक्शन बंद करें।

0

सुधार करने के बाद, एसकएलडीबीटीपी में इसकी पूंजी 'एस', विकल्प को हल करने के लिए माउस पर राइट क्लिक करें, सिस्टम को सेट करें और सिस्टम। डेटा नामस्थान जोड़ें। मेरे लिए काम किया!

1

आप राजधानी 'एस' के साथ लिख रहे हैं, लेकिन अभी भी विशेष रूप से दृश्य स्टूडियो 2015 में एक ही त्रुटि मिलती है, तो लेखन 'SqlDbType' के स्थान पर, लिखें: System.Data.SqlDbType

उदाहरण के लिए

:

param[0] = new SqlParameter("@Name", System.Data.SqlDbType.VarChar,50); 
संबंधित मुद्दे