我是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();
}
我不知道怎么做!请帮帮我!
答案 0 :(得分:1)
我很难理解非英语,但我建议你做一个改进:
string qry = "UPDATE b_libri "
"SET titolo='" + TextBox2.Text + "', "
"SET autore='" + TextBox3.Text + "', "
"SET editore='"+ TextBox4.Text + "' "
" WHERE codice='" + cod + "'";
要帮助解决其他问题,请为我们发布您的表格创建和约束创建代码。然后我们将能够帮助解决这些问题。
答案 1 :(得分:1)
我没有使用OLE连接的经验,但原则上它是:
OleDBCommand cmd = conn.CreateCommand( qry3 );
if ( cmd.ExecuteNonQuery() > 0 )
{
// at least one row updated
//everything is ok
}
else
{
something went wrong
}
使用ExecuteNonQuery,它将执行一个不是SELECT的sql语句,并返回受影响的行。
此外,不需要多个连接,一个就足够了,你可以在一个连接上执行多个命令。
也解释了Hogan的答案! 编辑:根据Hogan的建议改变了比较和评论
HTH
马里奥
答案 2 :(得分: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中的实际值。 感谢