<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ADO.NET</title><link>https://www.dotnetzone.gr:443/cs/forums/78/ShowForum.aspx</link><description>Θέματα σχετικά με την προσπέλαση δεδομένων μέσω του ADO.NET και του System.Data namespace</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Πρόβλημα κατά τη μεταφορά δεδομένων με .net 2.0 από Odbc σε SQL Express</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21063.aspx</link><pubDate>Fri, 24 Nov 2006 18:55:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21063</guid><dc:creator>Teo</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21063.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=21063</wfw:commentRss><description>&lt;P&gt;Σας ευχαριστώ όλους για τη βοήθεια. Η εφαρμογή μου&amp;nbsp;είναι Win Forms 2.0. Δοκίμασα και τις δύο λύσεις, (dataReader και SqlBulkCopy).&lt;/P&gt;
&lt;P&gt;Το πρόβλημα προκύπτει όταν πάω να αντιγράψω από το&amp;nbsp;ODBC τα data ενός πίνακα ο οποίος έχει κάποιες στήλες τύπου double. Μέσω του DataReader (εκτελώντας Select * from odbcTablename )&amp;nbsp;και του SqlBulkCopy παίρνω το ίδιο exception: Overflow ή underFlow exception (Το exception έρχεται από τον odbc driver).&amp;nbsp;Ο reader δεν μπορέι να διαβάσει τις στήλες αυτές (Δοκιμάζοντας τις διάφορες στήλες&amp;nbsp;στο select&amp;nbsp;query του reader ανακάλυψα ότι ευθύνονται οι double&amp;nbsp;columns για το exception).&amp;nbsp;Κάποια ιδέα για το&amp;nbsp;πώς θα μπορούσα να διαβάσω τον πίνακα?&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Πρόβλημα κατά τη μεταφορά δεδομένων με .net 2.0 από Odbc σε SQL Express</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/20683.aspx</link><pubDate>Sun, 19 Nov 2006 08:26:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:20683</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/20683.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=20683</wfw:commentRss><description>&lt;P&gt;Εφόσον παίζεις σε ADO.NET 2.0 θα σου πρότεινα να δεις την SqlBulkCopy. Δε νομίζω καμία άλλη λύση να σου δώσει καλύτερο performance. Ρίξε μια ματιά στο &lt;A href="http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx"&gt;msdn&lt;/A&gt; όπως επίσης και σε αυτό το άρθρο: &lt;A href="http://www.eggheadcafe.com/articles/20060318.asp"&gt;Speed Up Copy Operations with SqlBulkCopy&lt;/A&gt;. Ακόμη, μπορείς να συνδυάσεις το SqlBulkCopy με SMO και να κάνεις τη δουλειά σου πλήρως αυτοματοποιημένα...&lt;/P&gt;</description></item><item><title>Απ: Πρόβλημα κατά τη μεταφορά δεδομένων με .net 2.0 από Odbc σε SQL Express</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/20675.aspx</link><pubDate>Sun, 19 Nov 2006 05:23:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:20675</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/20675.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=20675</wfw:commentRss><description>Υπάρχει κάποιος λόγος που διαβάζεις τα δεδομένα από τον πίνακα του SQL Express? Αν θέλεις απλά να μεταφέρεις τα δεδομένα από τον ένα πίνακα στον άλλο, η γρηγορότερη λύση είναι να χρησιμοποιήσεις ένα data reader που θα διαβάσει τα δεδομένα από το ODBC και να εκτελέσεις ένα stored procedure ή sql statement που θα εισάγει την κάθε γραμμή στον πίνακα του sql express. Αν ο table adapter που έχεις φτιάξει περιλαμβάνει και την επιλογή δημιουργίας direct method, μπορείς να καλέσεις αυτές αντί να γράφεις το sql από την αρχή.&lt;br /&gt;
&lt;br /&gt;
Αν θέλεις οπωσδήποτε να χρησιμοποιήσεις δύο dataset, θα πρέπει να χρησιμοποιήσεις την DataTable.Rows.Add. Η ImportRow αντιγράφει μία γραμμή ακριβώς στην κατάσταση που βρισκόταν, (inserted, updated ή χωρίς αλλαγές) ενώ η Add θα την προσθέσει σαν καινούργια γραμμή. Σε κάθε περίπτωση πάντως, θα πρέπει να καλέσεις την DataAdapter.Update στο τέλος, όχι την DataAdapter.Fill για να γράψεις τις αλλαγές στη βάση.&lt;br /&gt;
&lt;br /&gt;
Άλλη μία δυνατότητα είναι να χρησιμοποιήσεις τη μέθοδο Load του DataTable με ένα DataReader που διαβάζει από το ODBC και μετά να καλέσεις την Update</description></item><item><title>Απ: Πρόβλημα κατά τη μεταφορά δεδομένων με .net 2.0 από Odbc σε SQL Express</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/20674.aspx</link><pubDate>Sun, 19 Nov 2006 05:23:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:20674</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/20674.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=20674</wfw:commentRss><description>Μετέφερα την ερώτηση στο ADO.NET γιατί δεν έχει καμμία σχέση με Winforms. Θα σβήσω το αρχικό post και θα αντιγράψω εδώ την απάντηση που έδωσα σε αυτό. Παρακαλώ να προσέχουμε που καταχωρούμε τις ερωτήσεις γιατί δημιουργείται πρόβλημα</description></item><item><title>Απ: Πρόβλημα κατά τη μεταφορά δεδομένων με .net 2.0 από Odbc σε SQL Express</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/20672.aspx</link><pubDate>Sun, 19 Nov 2006 05:12:16 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:20672</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/20672.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=20672</wfw:commentRss><description>Το άλλο post δεν το έσβησες! Υπάρχει ακόμα:http://www.dotnetzone.gr/cs/forums/20668/ShowPost.aspx#20668</description></item><item><title>Απ: Πρόβλημα κατά τη μεταφορά δεδομένων με .net 2.0 από Odbc σε SQL Express</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/20671.aspx</link><pubDate>Sun, 19 Nov 2006 05:11:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:20671</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/20671.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=20671</wfw:commentRss><description>Εγώ θα έκανα το εξής: Θα έκανα ένα νέο κενό datatable χρησιμοποιώντας έναν adapter της μορφής "SELECT * FROM MYTABLE WHERE 1=2"&lt;br /&gt;
&lt;br /&gt;
Στη συνέχεια θα χρησιμοποιούσα datareader για να διαβάσω τον source πίνακα και θα περνούσα τα δεδομένα στο datatable, στήλη προς στήλη. Κάθε 50 εγγραφές θα αποθήκευα και θα καθάριζα το dataset για να μην φρακάρω την μνήμη σε περίπτωση μεγάλων πινάκων.&lt;br /&gt;
&lt;br /&gt;
Αν πάλι θέλεις να φορτώσεις όλο την πίνακα και να τον αποθηκεύεις με ένα adapter.update τότε φόρτωσε τον source πίνακα σε ένα datatable, κάνε ένα foreach και εκτέλεσε την εντολή row.item(0)=row.item(0). Αυτό θα κάνει το rowstate της κάθε γραμμής changed, παρόλο που δεν άλλαξε η τιμή. Στη συνέχεια αποθήκευσε απευθείας το datatable στην άλλη βάση, χρησιμοποιώντας ένα δεύτερο adapter. Δεν χρειάζεται να αντιγράφεις τα δεδομένα από ένα datatable σε ένα άλλο.</description></item><item><title>Πρόβλημα κατά τη μεταφορά δεδομένων με .net 2.0 από Odbc σε SQL Express</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/20669.aspx</link><pubDate>Sun, 19 Nov 2006 05:04:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:20669</guid><dc:creator>Teo</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/20669.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=20669</wfw:commentRss><description>Υλοποιώ μια εφαρμογή σε .net 2.0 που διαβάζει πίνακα πίνακα από ενα Odbc και περνάει τα data σε μια βάση στον SQL 2005 Express. Για λόγους απαιτήσεων, αυτό πρέπει να υλοποιηθεί με .net και όχι με SSIS ή με άλλο τρόπο. Για τους ίδιους λόγους, οι πίνακες του SQL δεν πρέπει να εχουν κλειδιά ή constraints&lt;br&gt;Αυτό που κάνω είναι το εξής: Διαβάζω τον πίνακα από το ODBC και βάζω τα data σε ένα dataset ds1. Στη συνέχεια φτιάνω dataAdapter κάνοντας select από τον αντίστοιχο πίνακα του SQL Express και βάζω τα data σε ένα άλλο dataset ds2(αρχικά ο πίνκας του SQL και το ds2.Tables[0] δεν έχουν data). Μετά με την ImportRow περνάω τα data από τον πίνακα του ds1 στον πίνακα του ds2 (εδώ όμως το Rowstate εξακολουθεί να παραμένει Unchanged ). Στην συνέχεια κάνω dataAdapter.Fill(ds2) αλλά λόγω του Rowstate , δεν εισάγεται καμία εγγραφή στον πίνακα του SQL Express.&lt;br&gt;Επειδή οι πίνακες είναι πολλοί και έχουν πολλές columns, δεν με συμφέρει να χτίσω objects καθώς διαβάζω και στη συνέχεια να κανω insert με stored procedures. Αυτό που θέλω είναι να διαβάζω το dataset από το Odbc και να το περνάω στον SQL Express&lt;br&gt;Καμιά ιδέα για το πώς μπορώ να λύσω το πρόβλημα?&lt;br&gt;&lt;br&gt;Σημείωση: Είχα κάνει αρχικά το post κάτω από το "SQL Server και άλλες Databases" αλλά το έσβησα, ελπίζω να μην δημιούργησα πρόβλημα &lt;img src="/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;br&gt;</description></item></channel></rss>