<?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>Απ: This SqlTransaction has completed; it is no longer usable.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/36059.aspx</link><pubDate>Wed, 10 Oct 2007 17:28:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:36059</guid><dc:creator>Thiseas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/36059.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=36059</wfw:commentRss><description>Η τελευταία εντολή σου "End Sub" δηλώνει το τέλος μιας sub routine, αλλά δεν ξέρουμε που είναι η αρχή...&lt;br&gt;&lt;br&gt;Τι θέλω να πω:&lt;br&gt;1. Αν το κομμάτι κώδικα που μας δίνεις βρίσκεται σε κάποια sub-routine η οποία έχει κι άλλες εντολές, καλό θα ήτανε είτε να τις λάβεις υπ'όψη σου είτε να μας τις δείξεις.&lt;br&gt;2. Αν αυτή η sub-routine καλείται από ένα άλλο εξωτερικό κώδικα ο οποίος βρίσκεται (και αυτός) σε try και στο&amp;nbsp; Catch δεν κάνει τίποτε τότε ΑΝ οι παρακάτω εντολές αποτύχουν, δεν θα πάρεις "μυρωδια"!!!&lt;font color="#0000ff" size="2"&gt;&lt;br&gt;&lt;/font&gt;&lt;font size="2"&gt;myConnection.Open()&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff" size="2"&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; myTrans &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt; SqlTransaction = myConnection.BeginTransaction()&lt;font color="#0000ff" size="2"&gt;&lt;br&gt;Dim&lt;/font&gt;&lt;font size="2"&gt; cmd &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; SqlCommand = myConnection.CreateCommand()&lt;/font&gt;
&lt;br&gt;&lt;br&gt;&lt;font size="2"&gt;&lt;/font&gt;</description></item><item><title>Απ: This SqlTransaction has completed; it is no longer usable.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/36057.aspx</link><pubDate>Wed, 10 Oct 2007 17:26:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:36057</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/36057.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=36057</wfw:commentRss><description>&lt;p&gt;Δεν μπορώ να δω κάτι συγκεκριμένο. Προτείνω να κάνεις αυτό που λέει και ο Μάνος παραπάνω με τον profiler. Βλέπω όμως διάφορα πράγματα που θέλουν βελτίωση.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Το 1ο try πρέπει να ξεκινάει ακριβώς μετά το &lt;font size="2"&gt;BeginTransaction, διαφορετικά αν συμβεί ένα exception στις δυο επόμενες γραμμές μέχρι εκεί που έχεις το try, το transaction δεν θα κλείσει έγκαιρα. (edited: μπορεί να είναι εξαιρετικά απίθανο να συμβεί εκεί exception, αλλά όταν αργότερα μπεις στον κώδικα και προσθέσεις κι άλλα πράγματα εκεί, τα οποία μπορεί να περιέχουν πιθανά exceptions θα έχεις πρόβλημα. Είναι κλασσική περίπτωση "δημιουργίας" bug κατά τη συντήρηση του κώδικα).&lt;br&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font size="2"&gt;Επίσης στο πρώτο catch αποκρύπτεις τελείως το exception, δηλαδή δεν το εμφανίζεις πουθενά, με αποτέλεσμα να μην βλέπεις για πιο λόγο έχει γίνει κάτι λάθος.&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font size="2"&gt;Το cmd.Connection.Close πρέπει να είναι myConnection.Close. Μπορεί να είναι ισοδύναμο σε επίπεδο compiler, αλλά από πλευράς συντήρησης του κώδικα δεν είναι.&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font size="2"&gt;Το Connection.Close πρέπει να είναι έξω από όλα τα try/catch, έτσι ώστε να κλείνει σωστά και έγκαιρα και όταν δεν συμβεί exception (πράγμα που θα είναι και το πιο πιθανό, όταν ο κώδικάς σου τρέχει τελικά).&lt;br&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;</description></item><item><title>Απ: This SqlTransaction has completed; it is no longer usable.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/36056.aspx</link><pubDate>Wed, 10 Oct 2007 17:02:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:36056</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/36056.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=36056</wfw:commentRss><description>&lt;P&gt;Κατ' αρχήν τα ευαγγέλια λένε ότι όταν φτιάχνεις command θα πρέπει να του θέτεις και το connection εκτός από το transaction. Επιπλέον, όταν μπεις στο catch block, το transaction μπορεί να έχει γίνει ήδη rollback στο server, οπότε το Rolback() πρέπει να βρίσκεται μέσα σε δικό του try ... catch block.&lt;/P&gt;</description></item><item><title>Απ: This SqlTransaction has completed; it is no longer usable.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/36052.aspx</link><pubDate>Wed, 10 Oct 2007 16:24:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:36052</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/36052.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=36052</wfw:commentRss><description>&lt;P&gt;Το μήνυμα λάθους μπορεί να οφείλεται σε πολλούς λόγους. Καλό θα είναι να βάλεις τον Profiler για να δεις τι συμβαίνει πάνω στον server, πότε ανοίγει το connection, πότε ξεκινάει το transaction, πότε κλείνει το transaction και πότε το connection, καθώς εκτελείς τον κώδικα γραμμή-γραμμή. Επίσης, μπορείς να χρησιμοποιήσεις ένα δεύτερο SqlCommand το οποίο θα είναι "select @@Trancount". Αυτό θα πρέπει να σου επιστρέφει 0 πριν ξεκινήσει το transaction και 1 όσο είναι ενεργό. Άρα, αν δεις να επιστρέφει 0 πριν γίνει το commit, πάει να πει ότι με κάποιον τρόπο έχει κλείσει. &lt;/P&gt;
&lt;P&gt;Happy debugging &lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/P&gt;</description></item><item><title>This SqlTransaction has completed; it is no longer usable.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/36050.aspx</link><pubDate>Wed, 10 Oct 2007 06:42:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:36050</guid><dc:creator>Παπαδημητρίου Γεώργιος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/36050.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=36050</wfw:commentRss><description>&lt;P&gt;Οποιος επιθυμει θα μπορουσε να παραβρεθει στα βαφτισια μου, &lt;BR&gt;γιατι με το μηνυμα λαθους που αντιμετωπιζω στο rollback της transaction κοντευω να ξεβαπτιστω!&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;This SqlTransaction has completed; it is no longer usable.&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;Οποιαδηποτε βοηθεια θα την εκτιμουσα ιδιαιτερως!&lt;BR&gt;Σας ευχαριστω!&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; myConnection &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; SqlConnection = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; SqlConnection(strConn)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;myConnection.Open()&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; myTrans &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; SqlTransaction = myConnection.BeginTransaction()&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; cmd &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; SqlCommand = myConnection.CreateCommand()&lt;/P&gt;
&lt;P&gt;cmd.Transaction = myTrans&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Try&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;cmd.CommandText = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Insert into Members (Name, Surname, Uid, Password, Email) "&lt;/FONT&gt;&lt;FONT size=2&gt; &amp;amp; _&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Values (@Name, @Surname, @Uid, @Password, @Email)"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#008000 size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;With&lt;/FONT&gt;&lt;FONT size=2&gt; cmd.Parameters&lt;/P&gt;
&lt;P&gt;.Add(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; SqlParameter(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"@Name"&lt;/FONT&gt;&lt;FONT size=2&gt;, txtName.Text))&lt;/P&gt;
&lt;P&gt;.Add(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; SqlParameter(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"@Surname"&lt;/FONT&gt;&lt;FONT size=2&gt;, txtSurname.Text))&lt;/P&gt;
&lt;P&gt;.Add(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; SqlParameter(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"@Uid"&lt;/FONT&gt;&lt;FONT size=2&gt;, txtLogin.Text))&lt;/P&gt;
&lt;P&gt;.Add(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; SqlParameter(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"@Password"&lt;/FONT&gt;&lt;FONT size=2&gt;, txtPassword.Text))&lt;/P&gt;
&lt;P&gt;.Add(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; SqlParameter(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"@Email"&lt;/FONT&gt;&lt;FONT size=2&gt;, txtEmailll.Text))&lt;/P&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;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;cmd.ExecuteNonQuery()&lt;/P&gt;
&lt;P&gt;myTrans.Commit()&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Catch&lt;/FONT&gt;&lt;FONT size=2&gt; ex &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; Exception&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Try&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;myTrans.Rollback()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&amp;lt;&lt;STRONG&gt; ΣΕ ΑΥΤΟ ΤΟ ΣΗΜΕΙΟ ΤΟ CONNECTION EINAI AKOMH ANOIXTO&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Catch&lt;/FONT&gt;&lt;FONT size=2&gt; ex2 &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; Exception&lt;/P&gt;
&lt;P&gt;MsgBox(ex2.Message.ToString)&lt;/P&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;Try&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;cmd.Connection.Close()&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/P&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;Try&lt;/P&gt;&lt;/FONT&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;Sub&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>