2013-06-06 17 views
6

यह एक मेरे लिए एक रहस्य है, मैं कोड पता है कि मैं दूसरों से ले लिया, मेरे मामले में datatable यह रिटर्न खालीभरण DataTable

conSTR है कनेक्शन स्ट्रिंग, एक वैश्विक रूप में स्थापित स्ट्रिंग

public DataTable fillDataTable(string table) 
    { 
     string query = "SELECT * FROM dstut.dbo." +table; 

     SqlConnection sqlConn = new SqlConnection(conSTR); 
     sqlConn.Open(); 
     SqlCommand cmd = new SqlCommand(query, sqlConn); 

     DataTable dt = new DataTable(); 
     dt.Load(cmd.ExecuteReader()); 
     sqlConn.Close(); 
     return dt; 
    } 

संपादित करें 1
पूरे मुद्दे को बाद में एक TabControl पर एक datagrid ध्यान में रखते हुए इस तालिका को दिखाने के लिए है, यहाँ कि displaying multiple datatable in tabcontrol C#

01 पर सवाल यह है कि

यहाँ यह सिर्फ दिखाने मुझे एक रिक्त DataGridView है

संपादित 2
उन सब की कोशिश की, जब मैं तालिका प्रदर्शित करने के लिए प्रयास करते हैं, DataGridView खाली है, पंक्तियों की सही मात्रा है, लेकिन अब

+0

परिवर्तनीय तालिका का मूल्य क्या है? – Steve

+2

क्या तालिका में इसके रिकॉर्ड हैं? – Freelancer

+1

@Steve table = डेटाबेस से तालिका का नाम (कई हैं) – iakovl2

उत्तर

2
मूल्य

निम्नलिखित के साथ प्रयास करें:

public DataTable fillDataTable(string table) 
    { 
     string query = "SELECT * FROM dstut.dbo." +table; 

     SqlConnection sqlConn = new SqlConnection(conSTR); 
     sqlConn.Open(); 
     SqlCommand cmd = new SqlCommand(query, sqlConn); 
     SqlDataAdapter da=new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     sqlConn.Close(); 
     return dt; 
    } 

आशा है कि सहायक।

+2

अगर कुछ भी बदलता है तो मैं कुछ हद तक आश्चर्यचकित होगा; निश्चित रूप से प्रयास करने के लायक है, लेकिन 'DataTable.Load' विधि भी ठीक काम करती है। इसके अलावा: आपने 'ExecuteNonQuery' क्यों कहा? आपको 'cmd' * को निष्पादित नहीं किया जाना चाहिए * - एडाप्टर ऐसा करेगा। –

+0

@MarcGravell हो सकता है। मैं कोडिंग शैली से ऊपर नहीं जानता था। मैं हमेशा इस शैली में कोड करता हूं। तो मैंने यह सुझाव दिया। – Freelancer

+0

@ फ्रेलेंसर अभी भी अच्छा नहीं है, डिस्प्ले खाली है – iakovl2

27

यदि परिवर्तनीय table में अमान्य वर्ण (एक स्पेस की तरह) हैं तो आपको चर के चारों ओर स्क्वायर ब्रैकेट जोड़ना चाहिए।

public DataTable fillDataTable(string table) 
{ 
    string query = "SELECT * FROM dstut.dbo.[" + table + "]"; 

    using(SqlConnection sqlConn = new SqlConnection(conSTR)) 
    using(SqlCommand cmd = new SqlCommand(query, sqlConn)) 
    { 
     sqlConn.Open(); 
     DataTable dt = new DataTable(); 
     dt.Load(cmd.ExecuteReader()); 
     return dt; 
    } 
} 

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

+0

ब्लॉक का उपयोग करने में होना चाहिए, यह एक सूची से आता है, जो कोई अमान्य विकल्प नहीं है। अभी भी एक ही समस्या है – iakovl2

+0

@ iakovl2 यह एक शर्म की बात है जिसने मदद नहीं की - लेकिन कृपया यहां 'उपयोग' के स्टीव के उपयोग से सीखें; 'उपयोग' का सही उपयोग वास्तव में *** वास्तव में *** महत्वपूर्ण है। अगर मैं picky था मैं उल्लेख करता हूँ कि स्टीव एक (पाठक के आसपास) याद किया ... लेकिन जाहिर है मैं गुजरने में पर्याप्त उल्लेख नहीं कर रहा हूं ...; पी –

+0

@MarcGravell लेकिन यहां पाठक सीधे पास हो गया है भार। क्या आपका मतलब है कि SqlDataReader ऑब्जेक्ट का उपयोग करने के लिए दो में लाइन को विभाजित करना बेहतर है? – Steve