জেডিবিসি রেজাল্টসেট থেকে কলামগুলির সংখ্যা কীভাবে পাবেন?


92

আমি একটি সিএসভি -ফাইল অ্যাক্সেস করতে সিএসভিজেডিবিসি (এটি সিএসভি -ফাইলগুলির জন্য একটি জেডিবিসি-ড্রাইভার) ব্যবহার করছি। আমি জানি না যে কতগুলি কলামে সিএসভি-ফাইল রয়েছে। আমি কীভাবে কলামগুলির সংখ্যা পেতে পারি? এর জন্য কি কোনও জেডিবিসি-ফাংশন রয়েছে? আমি java.sql.ResultSet এ এর ​​জন্য কোনও পদ্ধতি খুঁজে পাচ্ছি না।

ফাইল অ্যাক্সেসের জন্য, আমি সিএসভিজেডিবিসি ওয়েবসাইটে উদাহরণের মতো কোড ব্যবহার করি ।

উত্তর:


250

আপনি রেজাল্টসেটমেটাডেটা থেকে কলাম নম্বর পেতে পারেন :

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();

int columnsNumber = rsmd.getColumnCount();

4
এটি বুঝতে আগ্রহী হবে যে কীভাবে সিএসভি জেডিবিসি ড্রাইভার এবং এটির ResultSetMetaDataপ্রয়োগটি পরিবর্তনশীল দৈর্ঘ্যের সিএসভি রেকর্ডগুলি পরিচালনা করে। উদাহরণস্বরূপ, যদি আপনি নির্দিষ্ট করে থাকেন SELECT * FROM sampleএবং প্রতিটি সারিতে আলাদা আলাদা ক্ষেত্র থাকে তবে কলামের গণনাটি প্রতিটি সারিতে পুনরাবৃত্তি হবে যা পুনরাবৃত্তি হয়েছিল?
rhu

@ আরহু এটা সহজ এটি হবে না, কারণ আপনি কোন সারিতে মেটাডেটা স্বাধীন। সুতরাং সম্ভবত এটি সর্বাধিক সংখ্যক কলাম পাওয়া গেছে।
লার্নের মারকুইস

8
PreparedStatement ps=con.prepareStatement("select * from stud");

ResultSet rs=ps.executeQuery();

ResultSetMetaData rsmd=rs.getMetaData();

System.out.println("columns: "+rsmd.getColumnCount());  
System.out.println("Column Name of 1st column: "+rsmd.getColumnName(1));  
System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(1)); 

4
কেউ কি জানেন? rs.getMetaData()পদ্ধতি কি ব্যয়বহুল? এটি কি প্রতিবার ডাটাবেসকে ডেকে জিজ্ঞাসা করে?
ফান্দি সুসান্টো

rs.getMetaData()কল নিবিড় হতে পারে; তবে একবার আপনার যদি বস্তুটি থাকে rsmdতবে মেটাডেটা অবজেক্টে পদ্ধতিগুলি চালনার সময় সাধারণত ডাটাবেসে কোনও অতিরিক্ত কল করা হয় না; সমস্ত মেটাডেটা getMetaData কল দিয়ে জনবহুল।
মার্ক স্টুয়ার্ট

4
এটি কি আরএসএমডি.গেটম কলামনাম (1) এবং আরএসএমডি.জেট কলামটাইম নাম (1) হওয়া উচিত নয়? আমরা "1st ম কলাম" মুদ্রণ করছি, ২ য় পত্রটি নয়।
ড্যাব

5

ফলাফলের সেটগুলির কলামগুলির সংখ্যা আপনি কোড সহ পেতে পারেন (ডিবি পোস্টগ্রিএসকিউএল হিসাবে ব্যবহৃত হয়):

// পোস্টগ্রিএসকিউএল-এর জন্য ড্রাইভার লোড করুন
Class.forName ("org.postgresql.Driver");

স্ট্রিং url = "jdbc: postgresql: // লোকালহোস্ট / পরীক্ষা";
প্রোপার্টি প্রোপস = নতুন প্রোপার্টি ();
props.setProperty ("ব্যবহারকারী", "মাইডবুসার");
props.setProperty ("পাসওয়ার্ড", "মাইডিবিপাস");
সংযোগ সংযোগ = ড্রাইভারManager.getConnication (url, প্রপস);

// বিবৃতি তৈরি করুন
বিবৃতি স্ট্যাটাস = সংযুক্তি.আর স্টেটমেন্ট ();

// ফলাফল সেট প্রাপ্ত
রেজাল্টসেট আরএসএস = স্টেট.এক্সেকিউটকিউরি ("সিআইএল সি সি, সি 2, সি 3, সি 4, সি 5 মাই_TABLE থেকে");

// ফলাফল সেট থেকে মেটাডেটা দিন
ফলাফলসেটমেটাডেটা আরএসএমডি = আরএস.েটমেটাডেটা ();

// কলামগুলি মেটাডেটা অবজেক্ট থেকে গণনা করে
int numOfCols = rsmd.getColumnCount ();

তবে আপনি কলামগুলি সম্পর্কে আরও মেটা-তথ্য পেতে পারেন:

for(int i = 1; i <= numOfCols; i++)
{
    System.out.println(rsmd.getColumnName(i));
}

এবং কমপক্ষে তবে কমপক্ষে নয়, আপনি কেবল টেবিল সম্পর্কে নয় ডিবি সম্পর্কেও কিছু তথ্য পেতে পারেন, কীভাবে এটি করতে পারেন আপনি এখানে এবং এখানে খুঁজে পেতে পারেন ।


4

সংযোগ স্থাপনের পরে এবং কোয়েরিটি কার্যকর করার পরে এটি ব্যবহার করে দেখুন:

 ResultSet resultSet;
 int columnCount = resultSet.getMetaData().getColumnCount();
 System.out.println("column count : "+columnCount);

-1

এটি কলামগুলিতে ডেটা মুদ্রণ করবে এবং শেষ কলামটি পৌঁছে গেলে নতুন লাইনে চলে আসবে।

ResultSetMetaData resultSetMetaData = res.getMetaData();
int columnCount = resultSetMetaData.getColumnCount();
for(int i =1; i<=columnCount; i++){
                if(!(i==columnCount)){

                    System.out.print(res.getString(i)+"\t");
                }
                else{
                    System.out.println(res.getString(i));
                }

            }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.