k.tnb Δημοσ. 10 Μαΐου 2009 Δημοσ. 10 Μαΐου 2009 Γεια χαρά παιδιά, έχω γράψει σε Visual C# (MS Visual Studio 08) τον παρακάτω κώδικα για μεταφορά δεδομένων σε μια βάση Access: > άλλα OleDbParameters... OleDbParameter usr = new OleDbParameter("@usr", OleDbType.VarChar); usr.Value = Request["usr"]; //Ένα string το οποίο έρχεται με αίτημα POST. query.Parameters.Add(usr); query.CommandText = "INSERT INTO myTable (usr, par, time) VALUES (@usr, @par, @timeL)"; con.Open(); query.ExecuteNonQuery(); con.Close(); Το πρόβλημα είναι ότι ενώ το πεδίο usr στη βάση έχει τύπο KEIMENO, το παραπάνω κομμάτι βγάζει λάθος ασυμφωνίας τύπων!! Όλες οι άλλες παράμετροι λειτουργούν κανονικά (οι άλλες είναι τύπου Integer). Ξέρει κανείς τι γίνεται;; Thnx...
Evgenios1 Δημοσ. 11 Μαΐου 2009 Δημοσ. 11 Μαΐου 2009 Γεια χαρά παιδιά, έχω γράψει σε Visual C# (MS Visual Studio 08) τον παρακάτω κώδικα για μεταφορά δεδομένων σε μια βάση Access: > άλλα OleDbParameters... OleDbParameter usr = new OleDbParameter("@usr", OleDbType.VarChar); [color="Red"]usr.Value = Request["usr"];[/color] //Ένα string το οποίο έρχεται με αίτημα POST. query.Parameters.Add(usr); query.CommandText = "INSERT INTO myTable (usr, par, time) VALUES (@usr, @par, @timeL)"; con.Open(); query.ExecuteNonQuery(); con.Close(); Το πρόβλημα είναι ότι ενώ το πεδίο usr στη βάση έχει τύπο KEIMENO, το παραπάνω κομμάτι βγάζει λάθος ασυμφωνίας τύπων!! Όλες οι άλλες παράμετροι λειτουργούν κανονικά (οι άλλες είναι τύπου Integer). Ξέρει κανείς τι γίνεται;; Thnx... Τι ειναι αυτο? Η value ειναι object (string σε αυτη τη περιπτωση), συγουρα δεν ειναι Request (που φανταζομαι ειναι δικη σου κλαση)
k.tnb Δημοσ. 11 Μαΐου 2009 Μέλος Δημοσ. 11 Μαΐου 2009 Ίσως δεν έγινα σαφής από το πρώτο post. Το κομμάτι αυτό είναι διαδικτυακή εφαρμογή και μέσω Request["aVariable"] (η οποία είναι κλάση του συστήματος) αποκτάς την τιμή μιας μεταβλητής η οποία έρχεται στην εφαρμογή μέσω HTTP POST (το αντίστοιχο για HTTP GET είναι Request.QueryString["variable"]). Η Request["aVariable"] επιστρέφει μια τιμή τύπου String την οποία θέλω να καταχωρίσω σαν τιμή στην παράμετρο usr. Εκεί είναι το πρόβλημα, στο ότι ορίζω την παράμετρο τύπου VarChar (για την MS Access) και υπάρχει ασυμφωνία με καταχώριση τιμής String. Δε μπορώ να καταλάβω... εκτός κι αν παραβλέπω κάτι πολύ προφανές.. ---------- Το μήνυμα προστέθηκε στις 21:18 ---------- Βρήκα ποιό ήταν το πρόβλημα τελικά! Σε περίπτωση που ενδιαφέρεται κανείς, το πρόβλημα βρίσκεται στη σειρά με την οποία προσθέτουμε τις παραμέτρους στο αίτημα η οποία θα πρέπει να είναι ακριβώς ίδια με τη σειρά που "περνάμε" τις παραμέτρους στην εντολή SQL. Δηλαδή εαν θέλουμε να περάσουμε τρεις παραμέτρους σε ένα INSERT αίτημα θα έχουμε: > Ορισμός 1ης παραμέτρου με όνομα: @par1 [i]myQuery.Parameters.Add(1η_παράμετρος);[/i] //Σημαντικό! 1η καταχώρηση Ορισμός 2ης παραμέτρου με όνομα: @par2 [i]myQuery.Parameters.Add(2η_παράμετρος);[/i]//Σημαντικό! 2η καταχώρηση Ορισμός 3ης παραμέτρου με όνομα: @par3 [i]myQuery.Parameters.Add(3η_παράμετρος);[/i]//Σημαντικό! 3η καταχώρηση myQuery.CommandText = "INSERT INTO myTable (var1, var2, var3) VALUES ([i][u]@par1[/u][/i], [i][u]@par2[/u][/i], [i][u]@par3[/u][/i])"; Η σειρά που παρουσιάζονται οι παράμετροι στην εντολή INSERT στο σκέλος VALUES πρέπει να είναι ίδια με αυτή της καταχώρησης!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.