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

 

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

Πρόβλημα σε SQL Server για WebForum Application

Îåêßíçóå áðü ôï ìÝëïò CodeFreak. Τελευταία δημοσίευση από το μέλος CodeFreak στις 14-07-2006, 04:44. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  13-07-2006, 17:36 14687

    Πρόβλημα σε SQL Server για WebForum Application

    Συνημμένα: Data.jpg

    Χαιρετώ τους συνάδελφους Developers.

    Γράφω ένα web application σε ASP.NET 2.0 - C# το οποίο είναι ένα web forum.

    H database έχει τα εξής tables:

    (Επειδή η εικόνα με τα tables δεν ανεβαίνει την έχω συνημμένη.)
    Αντιμετωπίζω το εξής πρόβλημα:
    Θέλω όταν ένα καινούργιο message γράφεται στη βάση να γίνονται τα εξής: 
       1. Να αυξάνονται οι Replies στο Table Topics κατα ένα.
       2. Να αυξάνονται τα Posts στο Table Forums κατα ένα.
    Στο δεύτερο ζητούμενο έχω πρόβλήμα.
    Αυτός είναι ο κώδικας που εκτελείται όταν ένα καινούριο Message γράφεται στην βάση:

    // get the connection string.

    string cs = WebConfigurationManager.ConnectionStrings["ForumConnectionString"].ConnectionString;

    // set up the data objects

    string insertMessage = "INSERT Messages (topicid, author, date, message) " +

                           "VALUES(@topicid, @author, @date, @message);" +

                           "UPDATE Topics SET replies = replies + 1 WHERE topicid = @topicid;" +

                           "UPDATE Forums SET posts = posts + 1 WHERE forumid = forumid";                

    SqlConnection con = new SqlConnection(cs);

    SqlCommand cmd = new SqlCommand(insertMessage, con);

    // get the query strings

    string topicid = Request.QueryString["topic"];

    string forumid = Request.QueryString["forum"];

    // insert the message

    cmd.CommandText = insertMessage;

    cmd.Parameters.Clear();

    cmd.Parameters.AddWithValue("topicid", topicid);

    cmd.Parameters.AddWithValue("author", txtEmail.Text);

    cmd.Parameters.AddWithValue("date", DateTime.Now);

    cmd.Parameters.AddWithValue("message", txtMessage.Text);

    con.Open();

    cmd.ExecuteNonQuery();

    con.Close();

     

    Το πρόβλημα βρήσκεται στο SQL string insertMessage. Οι δύο πρώτες γραμμές γράφουν το message, η τρίτη αυξάνει τα replies κατα 1. Η τέταρτη γραμμή που θέλω να αυξάνει τα posts για το συγκεκριμμένο forumid, αυξάνει τα posts για όλα τα forums.

    Στην αρχή είχα δοκιμάσει αυτό: UPDATE Forums SET posts = posts + 1 WHERE forumid = @forumid  αλλά παίρνω το εξής error: Must declare the scalar variable "@forumid".

                                                                (Αλήθεια τι είναι τα scalar variables ???)

    Οποιαδήποτε πρόταση ή λύση για το θέμα που αντιμετωπίζω είναι ευπρόσδεκτη....

     


  •  13-07-2006, 22:47 14706 σε απάντηση της 14687

    Απ: Πρόβλημα σε SQL Server για WebForum Application

    Αν το σκεφτείς το "UPDATE Forums SET posts = posts + 1 WHERE forumid = forumid" καλά κάνει και σου αυξάνει κάτα ένα όλα τα forums: Ουσιαστικά γράφεις "UPDATE Forums SET posts = posts + 1 WHERE 1=1"!!! Big Smile

    Ο σωστός τρόπος είναι να το γράψεις όπως το είχες στην αρχή: "UPDATE Forums SET posts = posts + 1 WHERE forumid = @forumid". Αυτό που φαίνεται ότι σου έλειπε είναι να προσθέσεις μια ακόμα παράμετρο την @forumid μαζί με τις άλλες: cmd.Parameters.AddWithValue("forumid", <a variable goes here>);

     

    George J.

    ΥΓ Αλήθεια γιατί γράφεις ένα forum από την αρχή;

     


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  14-07-2006, 04:44 14715 σε απάντηση της 14706

    Απ: Πρόβλημα σε SQL Server για WebForum Application

    Ευχαριστώ για τη διευκρίνηση. Μόλις το έκανα δούλεψε κανονικά.

    Πιστεύω να φάνηκε ότι είμαι νεος στον SQL Server και στην T-SQL....

    Το forum το γράφω για να το βάλω στο site που ετοιμάζω....

    Το γράφω από την αρχή για τους εξής λόγους :

    1. Είναι free :)

    2. Για να έχω πλήρη έλεγχο και να μπορέσω αργότερα να το βάλω και σε άλλα sites.

    3. Για εξάσκηση σε ASP.NET εφαρμογές που χρησιμοποιύν SQL Server.

    Αν υπάρχουν freeware web forums που να μπορώ να τα κάνω plug-in στο site μου, ή tutorials για web forums σε ASP.NET 2 θα τα εκτιμούσα....

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