2012-05-04 12 views
6

मेरे पास एक सीएसवी है जिसे मुझे vb.net में ग्रिडव्यू में पार्स करने की आवश्यकता है। अगर मैं चयन करता हूं *, मुझे बिना किसी समस्या के डेटा मिल जाता है। हालांकि, मैं ऐसी स्थिति में हूं जहां मुझे वास्तविक कॉलम नामों का संदर्भ देना होगा। और समस्या यह है कि, मेरे पास एप पर कोई नियंत्रण नहीं है जो सीएसवी उत्पन्न करता है, और वे स्क्वायर ब्रैकेट में कॉलम नाम बनाते हैं।मैं कॉलम नामों को कैसे क्वेरी करूं जिनमें स्क्वायर ब्रैकेट हों?

कैसे हो मैं कुछ इस तरह कर सकते हैं:

Dim cmdSelect As New OleDbCommand(SELECT "[name], [height] FROM myTable") 

तो मैं डेटा की वापसी मिल सकता है?

तो, पूरी तरह से स्पष्ट होने के प्रयास में: मेरे पास एक ऐसा ऐप है जो कॉलम हेडर [नाम] और [ऊंचाई] के साथ एक सीएसवी बनाता है जिसे MyTable नामक एक टेबल में बनाया गया है, और मेरे जीवन के लिए मैं नहीं समझ सकता विशेष रूप से [नाम] और [ऊंचाई] वापस कैसे करें।

उत्तर

11

यदि कॉलम नामों में स्क्वायर ब्रैकेट हैं, तो आप कॉलम नामों के चारों ओर लपेटने के लिए डबल कोट्स का उपयोग कर सकते हैं। एसक्यूएल सर्वर में नमूना नीचे परीक्षण किया गया था।

स्क्रिप्ट:

CREATE TABLE dbo.myTable 
(
     "[name]" varchar(max) not null 
    , "[height]" int not null 
); 

पता कर रहा है सभी स्तंभों:

SELECT * FROM dbo.myTable 

केवल विशिष्ट स्तंभ पता कर रहा है:

SELECT "[name]", "[height]" FROM dbo.myTable 

VB.NET कोड - नमूना 1:

Dim query As String = String.Format("SELECT {0}{1}{0}, {0}{2}{0} FROM dbo.myTable", """", "[name]", "[height]") 
Dim cmdSelect As New OleDbCommand(query) 

VB.NET कोड - नमूना 2:

Dim query As String = String.Format("SELECT {0}[name]{0}, {0}[height]{0} FROM dbo.myTable", """") 
Dim cmdSelect As New OleDbCommand(query) 
+1

+1 String.Format –

2

मैं इस धारणा है कि यह SQL सर्वर के लिए है बना रहा हूं।

ऑब्जेक्ट्स जिनमें] चरित्र शामिल है [] का उपयोग करके उद्धृत किया जाना चाहिए।

निम्न तालिका के लिए:

CREATE TABLE [t]]] (
    [i]]d] int primary key, 
    [da]]]ta] int 
) 

आप का उपयोग कर इसे से चुन सकते हैं:

SELECT [da]]ta], [i]]d] FROM [t]]] 

आप T-SQL भीतर एक तरह से वस्तु के नाम को उद्धृत करने के लिए देख रहे हैं, तो आप उपयोग कर सकते हैं QUOTENAME।

SELECT QUOTENAME('t]') 

SQL सर्वर के भीतर, आप ऑब्जेक्ट नामों को उद्धृत करने के लिए डबल-कोट्स का भी उपयोग कर सकते हैं; हालांकि, दो चीजें हैं जिन्हें आपको सत्यापित करने की आवश्यकता है।

सबसे पहले आपको यह सुनिश्चित करना होगा कि आपने QUOTED_IDENTIFIER को सक्षम किया है। कुछ ड्राइवर स्वचालित रूप से आपके लिए होंगे।

SET QUOTED_IDENTIFIER ON 

दूसरी सोच आपको यह करने की आवश्यकता होगी, यह सुनिश्चित कर लें कि आप अपने ऑब्जेक्ट नाम में किसी अन्य डबल कोट से बचें। टी-एसक्यूएल से, QUOTENAME फिर से बचाव के लिए आता है।

SELECT QUOTENAME('t"]') 

"t""]" 

VB.Net में आप की तरह कुछ करना चाहता हूँ चाहते हैं:

dim queryStr As String = String.Format("SELECT ""{1}"" FROM dbo.myTable", String.Replace(col1, """", """""")) 
+0

QUOTENAME समारोह का अच्छा उपयोग अक्सर कुंजी है! – Spi

संबंधित मुद्दे

 संबंधित मुद्दे