Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Odbc Connection

Îåêßíçóå áðü ôï ìÝëïò ceidman. Τελευταία δημοσίευση από το μέλος ceidman στις 28-04-2010, 22:43. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  28-04-2010, 20:00 58401

    Odbc Connection

    Καλησπέρα,

    προσπαθώ μέσα απο μια Form να εισάγω στοιχεία σε μια βάση δεδομένων. Χρησιμοποιώ Odbc Connection
    Το πρόβλημα είναι ότι οτιδήποτε και να γράψω εγώ στη φόρμα μου, αυτό που εισάγεται στη βάση είναι NULL τιμές και τίποτε άλλο!!

    Ιδού ο κώδικας:

    string cs = "DSN=mine;User=root;Pass=";
                OdbcConnection cn = new OdbcConnection(cs); ;
                OdbcCommand cmd = null;


                cmd = new OdbcCommand(@"insert into ship(id,name,x,y,length,cargo,destination)" +
                                   " values(@id,@name,@x,@y,@length,@cargo,@destination);");

                OdbcParameter par1 = new OdbcParameter();
                par1.ParameterName = "@id";
                par1.Value = 10;

                OdbcParameter par2 = new OdbcParameter();
                par2.ParameterName = "@name";
                par2.Value = textBox1.Text;

                OdbcParameter par3 = new OdbcParameter();
                par3.ParameterName = "@x";
                par3.Value = x;

                OdbcParameter par4 = new OdbcParameter();
                par4.ParameterName = "@y";
                par4.Value = y;

                OdbcParameter par5 = new OdbcParameter();
                par5.ParameterName = "@length";
                par5.Value = length;

                OdbcParameter par6 = new OdbcParameter();
                par6.ParameterName = "@cargo";
                par6.Value = cargo;

                OdbcParameter par7 = new OdbcParameter();
                par7.ParameterName = "@destination";
                par7.Value = "Dock A";


                cmd.Parameters.Add(par1);
                cmd.Parameters.Add(par2);
                cmd.Parameters.Add(par3);
                cmd.Parameters.Add(par4);
                cmd.Parameters.Add(par5);
                cmd.Parameters.Add(par6);
                cmd.Parameters.Add(par7);

                try
                {
                     // Open db connection
                     cn.Open();
                     cmd.Connection = cn;
                     cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    if (cn != null)
                        cn.Close();
                }




    Καμιά ιδέα για το τί μπορεί να φταίει?
  •  28-04-2010, 20:23 58402 σε απάντηση της 58401

    Απ: Odbc Connection

    Καταρχήν, το πως θα περάσεις τις παραμέτρους έχει να κάνει με τη βάση που χρησιμοποιείς. Αν χρησιμοποιείς OLEDB ή ADO.NET για να μιλήσεις σε SQL Server το @id δουλεύει σωστά. Το ODBC αν θυμάμαι καλά καταλαβαίνει μόνο το ? ως placeholder. Αυτό σημαίνει οτι θα πρέπει να περάσεις τις παραμέτρους με τη σειρά που εμφανίζονται στο statement.

    Αλήθεια, γιατί χρησιμοποιείς ODBC? Έχει αντικατασταθεί εδώ και 14-15 χρόνια περίπου από το OLEDB και είναι σημαντικά πιο αργό - 3 με 5 φορές πιο αργό, ανάλογα με την περίπτωση. Εκτός και αν χρησιμοποιείς κάποια βάση η οποία δεν έβγαλε OLEDB drivers εδώ και 15 χρόνια, σίγουρα υπάρχει κάποιος OLEDB driver που θα σου κάνει τη δουλειά. Ακόμα και για να μιλήσεις π.χ. με DB2 σε AS400 υπάρχει driver από την Microsoft τσάμπα ή την ΙΒΜ (ακριβά)


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  28-04-2010, 20:37 58404 σε απάντηση της 58402

    Απ: Odbc Connection

    Αρχικά χρησιμοποιούσα MysqlConnection. Σε ενα άλλο project δούλευε μια χαρά...Σ'αυτό δεν δούλευε ενώ η βάση που χρησιμοποιώ είναι πάλι Mysql. To OLEDB δεν το είχα υπ'όψιν...Θα το ψάξω
    Ευχαριστώ
  •  28-04-2010, 20:51 58405 σε απάντηση της 58404

    Απ: Odbc Connection

    Αν δεν δούλεψε θα πρέπει να βρεις το γιατί, όχι να δοκιμάζεις εντελώς άλλες τεχνολογίες για επικοινωνία. Κανείς δεν σου εξασφαλίζει ότι θα δουλέψουν καλύτερα - αντιθέτως μπορείς να στοιχηματίσεις ότι θα συναντήσεις περισσότερα προβλήματα. Άσε που το αρχικό πρόβλημα κατά πάσα πιθανότητα θα εμφανιστεί ξανά

    Αλήθεια, ποιό ήταν το πρόβλημα με το MySqlConnection ? Αν ήταν τα ελληνικά, θα δεις ότι το έχουμε ξανασυζητήσει πολλές φορές, π.χ. εδώ


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  28-04-2010, 21:49 58409 σε απάντηση της 58405

    Απ: Odbc Connection

    Το πρόβλημα με το MySqlConnection είναι ότι έβαζε null τιμές στη Βάση. Δεν χρησιμοποίησα Ελληνικά, άρα κάτι άλλο φταίει...
     Δέν μπόρεσα να βρώ γιατί γίνεται αυτό, και μετά απο ψάξιμο στο google βρήκα το ODBC κι ειπα να το χρησιμοποιήσω μήπως δουλέψει έτσι...Πάλι το ίδιο όμως!!!

    Γενικά ποιος είναι ο καλύτερος τρόπος για σύνδεση c# κώδικα με MySql?
  •  28-04-2010, 22:08 58410 σε απάντηση της 58409

    Απ: Odbc Connection

    Άλλαξες το placeholder; Δες εδώ για μερικά απλά παραδείγματα ως προς το πως συντάσσονται τα commands. Εναλλακτικά μπορείς να χρησιμοποιήσεις τον connector.
    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  28-04-2010, 22:11 58411 σε απάντηση της 58409

    Απ: Odbc Connection

     Κοίταξες το documentation του MySQL Connector για να δεις πως θέλει τις παραμέτρους? Αν ψάξεις θα δείς ότι έχει παραδείγματα και ότι η MySQL περιμένει τα ονόματα των παραμέτρων ως ?id αντί για @id.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  28-04-2010, 22:29 58413 σε απάντηση της 58410

    Απ: Odbc Connection

    Δοκίμασα αυτό (όπως έχει και στα παραδείγματα απ το παραπάνω link)

     OdbcConnection cn = new OdbcConnection(ConnStr);


                OdbcCommand cmd = new OdbcCommand(@"insert into ship(id,name,x,y,length,cargo,destination)" +
                                   " values(@id,@name,@x,@y,@length,@cargo,@destination);");

               
                cmd.Parameters.Add("@id",OdbcType.Int).Value=1;
                cmd.Parameters.Add("@name",OdbcType.VarChar).Value=textBox1.Text.Trim();
                cmd.Parameters.Add("@x",OdbcType.Int).Value=x;
                cmd.Parameters.Add("@y",OdbcType.Int).Value=y;
                cmd.Parameters.Add("@length",OdbcType.Int).Value=length;
                cmd.Parameters.Add("@cargo",OdbcType.Int).Value=cargo;
                cmd.Parameters.Add("@destination",OdbcType.VarChar).Value="dock A";



    Αλλα πάλι το πρόβλημα παραμένει....Η βάση έχει μόνο null τιμές!!
  •  28-04-2010, 22:34 58414 σε απάντηση της 58413

    Απ: Odbc Connection

    Ο ODBC provider θέλει μόνο "?". Ξανακοίταξε το insert command εδώ και βρες τι δεν έχεις σωστά. Βγάζει μάτι!!
    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  28-04-2010, 22:38 58415 σε απάντηση της 58413

    Απ: Odbc Connection

    Κανένα από τα παραδείγματα, ούτε για τον ODBC ούτε για τον MySQL Connecter δεν χρησιμοποιεί το πρόθεμα @.  Το παράδειγμα για ODBC χρησιμοποιεί σκέτο '?' χωρίς όνομα, το παράδειγμα για τον Connector χρησιμοποιεί το '?' σαν πρόθεμα.

    Με ODBC θα έπρεπε να γράψεις :

    OdbcCommand cmd = new OdbcCommand(@"insert into ship (id,name,x,y,length,cargo,destination) values(?,?,?,?,?,?,?);");

    Με Connector θα πρέπει να γράψεις:

    MySqlCommand cmd = new MySqlCommand(@"insert into ship (id,name,x,y,length,cargo,destination) values(?id,?name,?x,?y,?lenngth,?cargo,?destination);");

    Να επαναλάβω, το πως θα περάσεις τις παραμέτρους εξαρτάται από τη βάση και τον driver. Αν δεν χρησιμοποιήσεις τα σωστά ονόματα δεν υπάρχει περίπτωση να αποθηκεύσεις δεδομένα στη βάση

     

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  28-04-2010, 22:43 58417 σε απάντηση της 58415

    Απ: Odbc Connection

    Επιτέλους, βγήκε άκρη... Δούλεψε με mySqlConnection kai ? anti gia @ !!!

    Ευχαριστώ παρα πολύ για τη βοήθεια!!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems