C# 从文本框值更新访问数据库
我是c#和asp.net世界的新手! 我有个问题。 在access db中,我有两个表(book,loan),带有引用完整性约束(book.ID=loan.ID) 在我的项目中,我有一些textbox,当我更改textbox的值时,我必须更新表C# 从文本框值更新访问数据库,c#,asp.net,C#,Asp.net,我是c#和asp.net世界的新手! 我有个问题。 在access db中,我有两个表(book,loan),带有引用完整性约束(book.ID=loan.ID) 在我的项目中,我有一些textbox,当我更改textbox的值时,我必须更新表 protected void Button1_Click(object sender, EventArgs e) { cod = Request["cod"]; //Componiamo la stringa di interrogaz
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();
}
我不知道怎么做!请帮帮我 我很难理解非英语,但我建议这是你可以做的一个改进:
string qry = "UPDATE b_libri "
"SET titolo='" + TextBox2.Text + "', "
"SET autore='" + TextBox3.Text + "', "
"SET editore='"+ TextBox4.Text + "' "
" WHERE codice='" + cod + "'";
为了帮助我们完成其他工作,请为我们发布您的表创建和约束创建代码。然后我们将能够帮助解决这些问题。我没有OLE连接方面的经验,但原则上是:
OleDBCommand cmd = conn.CreateCommand( qry3 );
if ( cmd.ExecuteNonQuery() > 0 )
{
// at least one row updated
//everything is ok
}
else
{
something went wrong
}
使用ExecuteOnQuery,它将执行非SELECT的sql语句,并返回受影响的行
另外,不需要多个连接,一个就足够了,您可以在一个连接上执行多个命令
还有霍根的答案!
编辑:根据霍根的建议,更改了比较和备注
嗯
马里奥我决定使用文本框的不同值。 现在我有两个表,当我改变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");
}
问题只出现在(first_codice!=Textbox1.Text)时。first_codice首先是文本框的值;Text是Textbox1中的实际值。
谢谢请删除不必要的、已注释掉的代码HMMM。。。不返回受影响的行数。1怎么总是正确答案?不确定这是一个很好的模板。这没有帮助。如果您想更改您的问题,请这样做——添加答案是使用此网站的错误方式。改变原来的问题。还包括定义表的SQL,以便我们可以帮助解释您遇到的问题。没有这些,就无法知道发生了什么。C#对SQL问题毫无用处。您只需要一条注释。请使用更新的信息更改原始问题。不要发布答案。