2008-08-19 16 views
9

क्या यह संभव है (Vb.Net 2005 में), डेटासेट तालिका गुणों को मैन्युअल रूप से पार्स करने के बिना, तालिका बनाने और डेटाबेस में जोड़ने के लिए?डेटासेट तालिका से डीबी तालिका बनाएं

हमारे पास कुछ मशीनों पर हमारे कार्यक्रम के पुराने संस्करण हैं, जो स्पष्ट रूप से हमारे पुराने डेटाबेस हैं, और हम यह पता लगाने के लिए एक तरीका ढूंढ रहे हैं कि कोई लापता टेबल है या फिर तालिका की वर्तमान स्थिति के आधार पर तालिका उत्पन्न करें डेटासेट में। जब भी हम एक नया संस्करण जारी करते हैं (यदि नए कॉलम जोड़े गए थे) हम तालिका को दोबारा लिख ​​रहे थे, लेकिन यदि संभव हो तो हम इस चरण से बचना चाहते हैं।

+0

याकोव एलिस लिंक अब टूटा हुआ है, यह बदल गया है [यह] (http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/4929a0a8-0137-45f6-86e8-d11e220048c3/)। –

उत्तर

7

यह एमएसडीएन फोरम पोस्ट देखें: Creating a new Table in SQL Server from ADO.net DataTable

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

इस काम को मानते हुए मान लें, तो आप उस कोड को ले सकते हैं, और अपनी तालिका बनाने के लिए SqlCommand.ExecuteNonQuery() के माध्यम से डेटाबेस में जमा कर सकते हैं।

1

यहाँ कोड

SqlConnection con = new SqlConnection("Data Source=.;uid=sa;pwd=sa123;database=Example1"); 
     con.Open(); 
     string sql = "Create Table abcd ("; 
     foreach (DataColumn column in dt.Columns) 
     { 
      sql += "[" + column.ColumnName + "] " + "nvarchar(50)" + ","; 
     } 
     sql = sql.TrimEnd(new char[] { ',' }) + ")"; 
     SqlCommand cmd = new SqlCommand(sql, con); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     cmd.ExecuteNonQuery(); 
     using (var adapter = new SqlDataAdapter("SELECT * FROM abcd", con)) 
     using(var builder = new SqlCommandBuilder(adapter)) 
     { 
      adapter.InsertCommand = builder.GetInsertCommand(); 
      adapter.Update(dt); 
     } 
     con.Close(); 

आशा है कि आप समस्या हल मिल गया है। यहां डीटी डेटा-टेबल का नाम है। वैकल्पिक रूप से यू के साथ

adapter.Update(ds.Tables[0]); \\if u have a dataset 

वोट करें मेरा उत्तर अगर आपको लगता है कि मैं एक जवाब के साथ आप प्रदान की है

adapter.update(dt); 

जगह ले सकता है !!!

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