दिलचस्प पोस्ट
डीबग करें और विजुअलाइज स्टूडियो कोड के साथ Angular2 टाइपस्क्रिप्ट करें? cmake: जब चर को उद्धृत करने के लिए? वर्तमान जीएमटी विश्व समय प्राप्त करना मैं सी # में एक स्ट्रिंग को enum में कैसे रूपांतरित करूँ? मैट्रिक्स में दिए गए मान के तत्वों की संख्या कैसे गिना जा सकता है? फ़ायरफ़ॉक्स अद्यतन के बाद सेलेनियम के साथ ब्राउज़र नहीं खोल सकता सी ++ में स्ट्रिंग को बदलने में सबसे आसान तरीका वैरिएबल को त्रुटि प्रारंभ नहीं किया जा सकता है प्रति उपयोगकर्ता नवीनतम रिकॉर्ड को पुनः प्राप्त करने के लिए ग्रुप द्वारा अनुकूलित करें जावा: सूची को मानचित्र में कनवर्ट कैसे करें एक पांडा में एक पंक्ति जोड़ें। डेटाफ़्रेम पायथन के साथ एक UTF8 सीएसवी फ़ाइल पढ़ना जावा एनआईओ फ़ाइलचैनल बनाम फाइलऑप्टस्ट्रस्ट प्रदर्शन / उपयोगिता जब static_cast, dynamic_cast, const_cast और reinterpret_cast को इस्तेमाल किया जाना चाहिए? ग्रैडल डीएसएल विधि नहीं मिली: 'रनप्रागार्ड'

SqlDataReader से डेटा पढ़ें

मेरे पास एक SQL Server 2008 डेटाबेस है और मैं इसके बैकएंड में काम कर रहा हूं। मैं asp.net/C# पर काम कर रहा हूं

SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { //how do I read strings here???? } 

मुझे पता है कि पाठक के मूल्य हैं मेरी एसक्यूएल कमांड एक तालिका से सिर्फ 1 कॉलम का चयन करना है। कॉलम में केवल तार हैं मैं रीडर में पंक्तियों को एक बार पढ़ना चाहता हूं मैं यह कैसे करु?

वेब के समाधान से एकत्रित समाधान "SqlDataReader से डेटा पढ़ें"

 using(SqlDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { var myString = rdr.GetString(0); //The 0 stands for "the 0'th column", so the first column of the result. // Do somthing with this rows string, for example to put them in to a list listDeclaredElsewhere.Add(myString); } } 
 string col1Value = rdr["ColumnOneName"].ToString(); 

या

 string col1Value = rdr[0].ToString(); 

ये object हैं, इसलिए आपको उन्हें या तो डालने की आवश्यकता है। टॉस्ट्रिंग ()

कॉलम का नाम रखो डेटाबेस से वापस शुरू होता है जहां "ColumnName" है यदि यह एक स्ट्रिंग है, तो आप .ToString() उपयोग कर सकते हैं। यदि यह एक और प्रकार है, तो आपको इसे कन्वर्ट करने की आवश्यकता है System.Convert

 SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { string column = rdr["ColumnName"].ToString(); int columnValue = Convert.ToInt32(rdr["ColumnName"]); } 
 while(rdr.Read()) { string col=rdr["colName"].ToString(); } 

यह काम करेगा

एकल परिणाम के लिए

 if (reader.Read()) { Response.Write(reader[0].ToString()); Response.Write(reader[1].ToString()); } 

बहु परिणाम के लिए

 while(reader.Read()) { Response.Write(reader[0].ToString()); Response.Write(reader[1].ToString()); } 

सरल शब्दों में, यदि आपकी क्वेरी में column_name लौटाता है और यह एक स्ट्रिंग रखता है:

 while (rdr.Read()) { string yourString = rdr.getString("column_name") } 

असल में, मैंने यह सोचा कि मैं यह कर सकता हूं:

 while (rdr.read()) { string str = rdr.GetValue().ToString().Trim(); } 

उन लोगों के लिए मेरी सहायक पद्धति साझा करने के लिए विचार किया जो इसे उपयोग कर सकते हैं:

 public static class Sql { public static T Read<T>(DbDataReader DataReader, string FieldName) { int FieldIndex; try { FieldIndex = DataReader.GetOrdinal(FieldName); } catch { return default(T); } if (DataReader.IsDBNull(FieldIndex)) { return default(T); } else { object readData = DataReader.GetValue(FieldIndex); if (readData is T) { return (T)readData; } else { try { return (T)Convert.ChangeType(readData, typeof(T)); } catch (InvalidCastException) { return default(T); } } } } } 

उपयोग:

 cmd.CommandText = @"SELECT DISTINCT [SoftwareCode00], [MachineID] FROM [CM_S01].[dbo].[INSTALLED_SOFTWARE_DATA]"; using (SqlDataReader data = cmd.ExecuteReader()) { while (data.Read()) { usedBy.Add( Sql.Read<String>(data, "SoftwareCode00"), Sql.Read<Int32>(data, "MachineID")); } } 

सहायक पद्धति किसी भी मूल्य को आपके पास जाती है, यदि वह नहीं डाली या डेटाबेस का मूल्य नल हो, तो परिणाम शून्य हो जाएगा।

मेरे पास सहायक फ़ंक्शन है:

  public static string GetString(object o) { if (o == DBNull.Value) return ""; return o.ToString(); } 

तो मैं इसका उपयोग स्ट्रिंग निकालने के लिए करता हूं:

  tbUserName.Text = GetString(reader["UserName"]); 

मुझे पता है कि यह एक पुरानी है, लेकिन अगर आप वर्ग में एक SqlDataReader की सामग्री पढ़ रहे हैं, तो यह बहुत आसान होगा। पाठक और वर्ग का स्तंभ नाम समान होना चाहिए

 public static List<T> Fill<T>(this SqlDataReader reader) where T : new() { List<T> res = new List<T>(); while (reader.Read()) { T t = new T(); for (int inc = 0; inc < reader.FieldCount; inc++) { Type type = t.GetType(); string name = reader.GetName(inc); PropertyInfo prop = type.GetProperty(name); if (prop != null) { if (name == prop.Name) { var value = reader.GetValue(inc); if (value != DBNull.Value) { prop.SetValue(t, Convert.ChangeType(value, prop.PropertyType), null); } //prop.SetValue(t, value, null); } } } res.Add(t); } reader.Close(); return res; }