<?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>Πρώτα Βήματα - Βάσεις δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/73/ShowForum.aspx</link><description>Για όσους κάνουν τα πρώτα τους βήματα στην Microsoft Access ή τον SQL Server, ή γενικότερα στη θεωρία βάσεων δεδομένων.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: error converting data type nvarchar to numeric</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/36470.aspx</link><pubDate>Mon, 22 Oct 2007 07:08:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:36470</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/36470.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=36470</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Παπαδημητρίου Γεώργιος:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Dim Assos as&amp;nbsp;double = "2.3"&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Το Dim είναι λάθος - το σωστό είναι:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;Dim&lt;/SPAN&gt; Assos &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;as&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:blue;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;double&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; 2.3&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Η μεταβλητή δεν είναι string! Προς τί τα εισαγωγικά;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Παπαδημητρίου Γεώργιος:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;sqlcmd.CommandText = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"INSERT INTO Coupon (Assos) VALUES (N'"&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;amp; Assos &amp;amp; &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"'&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;')"&lt;/FONT&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Εκτός του ότι η μετατροπή της μεταβλητής Assos είναι λάθος, και το SQL είναι λάθος - η τιμή της στύλης είναι αριθμιτική, γιατί να γίνει Unicode string; Το σωστό είναι:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:black;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;sqlcmd.CommandText &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:red;FONT-FAMILY:Courier New;BACKGROUND-COLOR:transparent;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;"INSERT INTO Coupon (Assos) VALUES ("&lt;/SPAN&gt; &amp;amp; Assos.ToString() &amp;amp; &lt;SPAN style="FONT-WEIGHT:normal;FONT-SIZE:11px;COLOR:#666666;FONT-FAMILY:Courier New;BACKGROUND-COLOR:#e4e4e4;"&gt;")"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Άμα κάνεις τις παραπάνω αλλαγές ο αρχικός σου κώδικας θα δουλέψει...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Απ: error converting data type nvarchar to numeric</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/36464.aspx</link><pubDate>Mon, 22 Oct 2007 00:48:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:36464</guid><dc:creator>Παπαδημητρίου Γεώργιος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/36464.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=36464</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Γιώργος Μπακογιάννης:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;
&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Σωστό είναι να περνάς ως «&lt;SPAN style="mso-ansi-language:EN-US;"&gt;parameters&lt;/SPAN&gt;» τα ορίσματα σου.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;With&lt;/FONT&gt;&lt;FONT size=2&gt; sqlcmd.Parameters&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/P&gt;.Add(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"@Assos"&lt;/FONT&gt;&lt;FONT size=2&gt;, Data.SqlDbType.Decimal).Value = Assos&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;With&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT size=2&gt;
&lt;P&gt;sqlcmd.CommandText = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"INSERT INTO Coupon (Assos) VALUES @Assos)"&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;sqlcmd.ExecuteNonQuery()&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#000000&gt;Ok it works!&lt;BR&gt;Αλλά τελείως εγκυκλοπαιδικά, υπάρχει λογική εξηγηση σε αυτο;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;</description></item><item><title>Απ: error converting data type nvarchar to numeric</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/36463.aspx</link><pubDate>Mon, 22 Oct 2007 00:44:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:36463</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/36463.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=36463</wfw:commentRss><description>&lt;P&gt;Αν και έχεις ένα σωρό implicit conversions στον κώδικα που δίνεις, πράγμα που δεν πρέπει να συμβαίνει, κατά τη γνώμη μου το πιό σημαντικό για να λύσεις το πρόβλημά σου είναι να δεις ποιά πραγματικά SQL παράγεται. Δοκίμαζε να κάνεις ανάθεση σε μια μεταβλητή και debug πριν τη στείλεις στο CommandText property ή εναλλακτικά κάνε debug επάνω στο statement αυτό για να δεις τι πραγματικά έχει πάρει το commandtext property. Αυτό που έχει συμβεί στην συγκεκριμένη περίπτωση που κανεiς string concatenation προκειμένου να επιτύχεις τη σύνθεση του SQL statement σου είναι το εξής παραγόμενο:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#a31515&gt;INSERT INTO Coupon (Assos) VALUES (N'2.3'&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#000000&gt;Και, φυσικά, αυτό είναι λάθος. Είναι λάθος γιατί προσπαθεις να περάσεις στο πεδίο Assos, το οποίο είναι numeric,&amp;nbsp;μια τιμή nvarchar. (Ναι, είναι nvarchar, παρά το ο,τι μπορεί να πιστεύεις!). Αν βγάλεις τα "αυτάκια" γύρω από την τιμή 2.3 το πρόβλημά σου θα λυθεί. Ομως, για το πώς έφτασες μέχρι εδώ προκύπτει ούτως η άλλως μια σειρά κακών πρακτικών τις οποίες αναλύω παρακάτω.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#000000&gt;Ας δούμε ένα ένα τα implicit conversions που έχουν συμβεί (για να αναλύσουμε πιό σωστά τα διάφορα σφάλματα που έγιναν μέχρι να φτάσουμε στο error αυτό). Προσοχή: Δεν έχουν τα σφάλματα να κάνουν με το error αυτό καθαυτό, μια και το γιατί συμβαίνει το αναλύσαμε παραπάνω. Απλά πιό ακαδημαϊκά, για να δούμε ποιό είναι το λανθασμένο practice.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#000000&gt;Dim Assos as&amp;nbsp;double = "2.3"&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#000000&gt;Εδώ γίνεται της κακομοίρας. Ορίζεις μια μεταβλητή ως double και της περνάς σαν τιμή ένα string. Δεν το έχω κάνει, αλλά υποθέτω οτι implicitly γίνεται μετατροπή του string στο αντίστοιχο double της, οπότε η μεταβλητή Assos έχει πάρει όντως την τιμή 2.3.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#000000&gt;sqlcmd.CommandText = &lt;FONT color=#a31515 size=2&gt;"INSERT INTO Coupon (Assos) VALUES (N'"&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;amp; Assos &amp;amp; &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"'&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;')"&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#000000&gt;Εδώ πάλι γίνεται δεύτερο implicit conversion. Προσπαθείς να κάνεις concatenate ένα string και ένα double. Φυσικά, implicitly πάλι το double γίνεται convert σε string και η εντολή σου γίνεται τελικά η πολύπαθη &lt;/FONT&gt;&lt;FONT color=#a31515&gt;INSERT INTO Coupon (Assos) VALUES (N'2.3'&lt;FONT size=2&gt;). &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#000000&gt;Το πιό λογικό θα ήταν αυτό που είπε ο Γιώργος. Δεν φτιάχνουμε SQL commands με string concatenation, αλλά χρησιμοποιούμε SQLParameters. Επίσης βάζουμε Option Explicit για να αποφύγουμε τις ανεπιθύμητες μετατροπές μεταξύ data types. Αν το είχες αυτό, ο κώδικάς σου θα είχε χτυπήσει σε compile time από το dim statement, οπότε θα υποψιαζόσουν οτι κάτι πηγαίνει στραβά. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#a31515 size=2&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;</description></item><item><title>Απ: error converting data type nvarchar to numeric</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/36460.aspx</link><pubDate>Mon, 22 Oct 2007 00:24:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:36460</guid><dc:creator>γιωργος μπακογιαννης</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/36460.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=36460</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN:0cm 0cm 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Σωστό είναι να περνάς ως «&lt;SPAN style="mso-ansi-language:EN-US;"&gt;parameters&lt;/SPAN&gt;» τα ορίσματα σου.&lt;/FONT&gt;&lt;/P&gt;</description></item><item><title>error converting data type nvarchar to numeric</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/36459.aspx</link><pubDate>Mon, 22 Oct 2007 00:01:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:36459</guid><dc:creator>Παπαδημητρίου Γεώργιος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/36459.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=36459</wfw:commentRss><description>&lt;P&gt;Γεια χαρα,&lt;/P&gt;
&lt;P&gt;Στον&amp;nbsp;sql server έχω στηλες&amp;nbsp;οι οποιες είναι του τυπου numeric(8,2). &lt;BR&gt;Στην εφαρμογη που εχω φτιαξει εχω δηλωσει πχ την ακολουθη μεταβλητη.&lt;/P&gt;
&lt;P&gt;Dim Assos as&amp;nbsp;double = "2.3"&lt;/P&gt;
&lt;P&gt;Κατα την εκτελεση&amp;nbsp;της ακολουθης εντολης, λαμβανω το μηνυμα λαθους &lt;STRONG&gt;error converting data type nvarchar to numeric&lt;BR&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;FONT size=2&gt;sqlcmd.CommandText = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"INSERT INTO Coupon (Assos) VALUES (N'"&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;amp; Assos &amp;amp; &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"'&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;')"&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;sqlcmd.ExecuteNonQuery()&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;Σας παραθετω δε τα ακολουθα συμφωνα με τη microsoft:&lt;BR&gt;"Implicit conversions are those conversions that occur without specifying either the CAST or CONVERT function"&lt;BR&gt;&lt;BR&gt;Τι ακριβως κάνω λαθος;&lt;BR&gt;Σας ευχαριστω εκ των προτερων.&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;IMG src="http://www.kickstart.gr/1.gif"&gt;&lt;/P&gt;</description></item></channel></rss>