2010-10-03 33 views
0

即時通訊新聞在C#和asp.net的世界! 我有一個問題。 在訪問數據庫我有2表(書,貸款)與參照完整性約束(book.ID = loan.ID)。更新來自文本框的訪問分貝值

在我的項目中我有一些文本框,當我更改文本框的值時,我必須更新表格。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    cod = Request["cod"]; 

    //Componiamo la stringa di interrogazione al database relativa alla tabella b_prestiti 
    qry = "UPDATE b_libri SET codice='" + TextBox1.Text + "' WHERE codice='" + cod + "'"; 
    string qry2 = "SELECT codice_libro FROM b_prestiti WHERE codice_libro='" + cod + "'"; 
    string qry3 = "UPDATE b_prestiti SET codice_libro='"+ TextBox1.Text + "' WHERE codice_libro='" + cod + "'"; 
    string qry4 = "UPDATE b_libri SET titolo='" + TextBox2.Text + "' WHERE codice='" + cod + "'"; 
    string qry5 = "UPDATE b_libri SET autore='" + TextBox3.Text + "' WHERE codice='" + cod + "'"; 
    string qry6 = "UPDATE b_libri SET editore='" + TextBox4.Text + "' WHERE codice='" + cod + "'"; 

    //Creiamo gli oggetti di tipo OleDbConnection 
    //passando la stringa di connessione al costruttore 
    conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
    OleDbConnection conn2 = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
    OleDbConnection conn3 = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 

    //Inizializziamo gli oggetti di tipo OleDbCommand 
    cmd = conn.CreateCommand(); 
    OleDbCommand cmd2 = conn2.CreateCommand(); 
    OleDbCommand cmd3 = conn3.CreateCommand(); 

    OleDbDataReader reader2 = null; 
    //OleDbDataReader reader3 = null; 

    //Apriamo la connessione 
    conn.Open(); 
    conn2.Open(); 
    conn3.Open(); 
    /* 
    cmd2.CommandText = qry2; 
    reader2 = cmd2.ExecuteReader();*/ 

    if (MessageBox.Show("Sei sicuro di voler aggiornare questo libro?", "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes) 
     { 
      if (!first_titolo.Equals(TextBox2.Text) || !first_autore.Equals(TextBox3.Text) || !first_editore.Equals(TextBox4.Text)) 
      { 
       /* while (reader2.Read()) 
       { 
        if (reader2["codice_libro"] != "") 
        { 
         if (MessageBox.Show("VINCOLI REFERENZIALI! Vuoi aggiornare comunque?", "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes) 
         { 
          cmd3.CommandText = qry3; 
          reader3 = cmd3.ExecuteReader(); 
          reader3.Close(); 

          MessageBox.Show("Vincolo Aggiornato!"); 
         } 
         else Response.Redirect("Default.aspx"); 
        } 

       }*/ 
       /*cmd.CommandText = qry; 
       reader = cmd.ExecuteReader(); 
       reader.Close();*/ 
       MessageBox.Show("aggiornato!"); 
      } 
      else MessageBox.Show("no"); 
      /* 

      if (first_titolo != TextBox2.Text) 
      { 
       cmd.CommandText = qry4; 
       reader = cmd.ExecuteReader(); 
       reader.Close(); 
       MessageBox.Show("Aggiornato!"); 
      } 

      if (first_autore != TextBox3.Text) 
      { 
       cmd.CommandText = qry5; 
       reader = cmd.ExecuteReader(); 
       reader.Close(); 
       MessageBox.Show("Aggiornato!"); 
      } 

      if (first_editore != TextBox4.Text) 
      { 
       cmd.CommandText = qry6; 
       reader = cmd.ExecuteReader(); 
       reader.Close(); 
       MessageBox.Show("Aggiornato!"); 
      } 

     */ 

     } 
     //else Response.Redirect("Default.aspx"); 


// reader2.Close(); 

    //Chiudiamo la connessione 
    conn.Close(); 
    conn2.Close(); 
    conn3.Close(); 

} 

我不知道該怎麼做!請幫幫我!

+1

請刪除不必要的,註釋掉的代碼 – abatishchev 2010-10-03 14:32:31

回答

1

很難理解非英語爲我,但我認爲這是一個進步,你可以做:

string qry = "UPDATE b_libri " 
        "SET titolo='" + TextBox2.Text + "', " 
        "SET autore='" + TextBox3.Text + "', " 
        "SET editore='"+ TextBox4.Text + "' " 
       " WHERE codice='" + cod + "'"; 

爲了幫助其他的東西,請發表您的表的建立和約束創建代碼我們。那麼我們將能夠幫助解決這些問題。

+0

+1錯過了徹底...... – 2010-10-03 14:34:36

+0

我解決有關texbox的differente值。 – Dario 2010-10-03 16:14:52

+0

我解決了texbox的差異值。 – Dario 2010-10-03 16:15:05

1

我沒有與OLE連接的經驗,但原則是:

OleDBCommand cmd = conn.CreateCommand(qry3); 

if (cmd.ExecuteNonQuery() > 0) 
{ 
    // at least one row updated 
    //everything is ok 
} 
else 
{ 
    something went wrong 
} 

而使用ExecuteNonQuery,它將執行一個SQL語句不是SELECT,並將返回受影響的行。

此外,不需要多個連接,一個應該就足夠了,您可以在一個連接上執行多個命令。

還譴責霍根的答案! 編輯:按照霍根的建議,改變了對比和言論

心連心

馬里奧

+0

hmmm ...不ExecuteNonQuery()返回受影響的行數。 1如何總是正確的答案?不知道這是一個偉大的模板。 – Hogan 2010-10-03 14:36:47

+1

+1用於指出ExecuteNonQuery()作爲正確的調用。 – Hogan 2010-10-03 14:39:39

0

我解決有關文本框的值不同。 現在我有2個表,我應該檢查,當我更改Codice(Id)的值時,如果有 參照完整性約束。

// Aggiorna 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     cod = Request["cod"]; 

     //Componiamo la stringa di interrogazione al database relativa alla tabella b_prestiti 
     qry = "UPDATE b_libri SET codice='" + TextBox1.Text + "' WHERE codice='" + cod + "'"; 
     string qry2 = "SELECT codice_libro FROM b_prestiti WHERE codice_libro='" + cod + "'"; 
     string qry3 = "UPDATE b_prestiti SET codice_libro='" + TextBox1.Text + "' WHERE codice_libro='" + cod + "'"; 
     string qry4 = "UPDATE b_libri SET titolo='" + TextBox2.Text + "' WHERE codice='" + cod + "'"; 
     string qry5 = "UPDATE b_libri SET autore='" + TextBox3.Text + "' WHERE codice='" + cod + "'"; 
     string qry6 = "UPDATE b_libri SET editore='" + TextBox4.Text + "' WHERE codice='" + cod + "'"; 

     //Creiamo gli oggetti di tipo OleDbConnection 
     //passando la stringa di connessione al costruttore 
     conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
     OleDbConnection conn2 = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
     OleDbConnection conn3 = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 

     //Inizializziamo gli oggetti di tipo OleDbCommand 
     cmd = conn.CreateCommand(); 
     OleDbCommand cmd2 = conn2.CreateCommand(); 
     OleDbCommand cmd3 = conn3.CreateCommand(); 

     OleDbDataReader reader2 = null; 
     OleDbDataReader reader3 = null; 

     //Apriamo la connessione 
     conn.Open(); 
     conn2.Open(); 
     conn3.Open(); 

     cmd2.CommandText = qry2; 
     reader2 = cmd2.ExecuteReader(); 

     if (changed) 
     { 
      if (MessageBox.Show("Sei sicuro di voler aggiornare questo libro?", "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes) 
      { 
       if (first_titolo != TextBox2.Text) 
       { 
        cmd.CommandText = qry4; 
        reader = cmd.ExecuteReader(); 
        reader.Close(); 
        MessageBox.Show("Titolo Aggiornato!"); 
       } 

       if (first_autore != TextBox3.Text) 
       { 
        cmd.CommandText = qry5; 
        reader = cmd.ExecuteReader(); 
        reader.Close(); 
        MessageBox.Show("Autore Aggiornato!"); 
       } 

       if (first_editore != TextBox4.Text) 
       { 
        cmd.CommandText = qry6; 
        reader = cmd.ExecuteReader(); 
        reader.Close(); 
        MessageBox.Show("Editore Aggiornato!"); 
       } 
       if (first_codice != TextBox1.Text) 
       { 
        while (reader2.Read()) 
        { 
         if (reader2["codice_libro"] != "") 
         { 
          if (MessageBox.Show("VINCOLI REFERENZIALI! Vuoi aggiornare comunque?", "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes) 
          { 

           //reader3.Close(); 
           cmd.CommandText = qry; 
           cmd3.CommandText = qry3; 
           reader3 = cmd3.ExecuteReader(); 
           reader = cmd.ExecuteReader(); 


           // reader.Close(); 
           MessageBox.Show("Vincolo Aggiornato!"); 
          } 
          else Response.Redirect("Default.aspx"); 
         } 
         else 
         { 
          cmd3.CommandText = qry3; 
          reader3 = cmd3.ExecuteReader(); 
          reader3.Close(); 
          Response.Redirect("Default.aspx"); 
         } 
        } 

        cmd.CommandText = qry; 
        reader = cmd.ExecuteReader(); 
        reader.Close(); 
        MessageBox.Show("Codice Aggiornato!"); 
        reader.Close(); 
        // reader3.Close(); 
        conn.Close(); 
        conn2.Close(); 
        conn3.Close(); 
        Response.Redirect("Default.aspx"); 
       } 
      } 
      else Response.Redirect("Default.aspx"); 
     } 
     else Response.Redirect("Default.aspx"); 
    } 

問題是隻有當(fist_codice!= Textbox1.Text)。 first_codice首先是文本框的值; Textbox1.Text是textbox1中的實際值。 感謝

+0

這沒有幫助。如果你想改變你的問題,請這麼做 - 添加答案是使用此網站的錯誤方式。更改原來的問題。還包括定義您的表的SQL,以便我們可以幫助解釋您遇到的問題。沒有這些,就無法知道發生了什麼。 C#對SQL問題沒有用處。 – Hogan 2010-10-03 16:57:43