方案:
我有一个手机比较显示各种网络交易的asp.net网站。我们从网络收到的交易数据位于Excel表格中。我们将数据从excel表格导入到数据库中每个网络的表格中。现在,我们收到的数据对于每个网络都不一致,因为网络可能会将电话名称命名为'curve 8250',另一个可能会将其命名为'8250曲线',而另一个可能会将其命名为'8250曲线'。使用C#更新几个SQL表中的相同列使用C#
现在,我们有另一个模块,它允许用户查看在所有网络上可用的特定手机的交易。为了使这个模块能够正常工作,我们需要做的是确保所有网络的电话名称一致。
为此,我打算为webadmin制作一个模块,该模块显示来自所有网络表格的电话名称(可能是gridview),网站管理员可以编辑电话名称以保持一致。从所有表中检索不同的列名是很容易的,而且完成了。
问题: 现在,真正的部分是我们如何编程模块,以便它更新所有网络表中的特定列值。每个表格的模式完全相同。
编辑:我总是忘记添加一些东西:@。我知道这可以在代码背后以困难的方式完成,运行一个循环。但是,有没有更简单,无障碍的方法呢?像一些数据控制,会让这种情况下的生活变得更容易一些?
更新:
我试着用后面的代码来做这件事。我做了一个gridview,并使用项目模板显示数据,并在第二个模板中提供了一个文本框。然后点击一个按钮,我运行这段代码:
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings[0].ToString());
foreach(GridViewRow gvr in GridView1.Rows)
{
TextBox tb = (TextBox)gvr.FindControl("New Value");
Label lbl = (Label)gvr.FindControl("Old Value");
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
if (lbl.Text != tb.Text)
{
try //updation if primary key constraint is not broken
{
con.Open();
cmd.CommandText = myupdatecommand; /*this is not the actual command that I'm passing, the command I'm passing does contain the values lbl.Text & tb.Text. This is just to make it a better read.*/
cmd.ExecuteNonQuery();
}
catch (SqlException sqe)
{
if (sqe.ErrorCode == -2146232060)//if primary key constraint is broken
{
try
{
//delete the row from the table that contains only unique phone names
cmd.CommandText = deletecommand;
cmd.ExecuteNonQuery();
}
catch { }
}
}
finally
{
con.Close();
}
//Update table2
try //only updation as here the phone name is not a primary key
{
con.Open();
cmd.CommandText = updatetable2;
cmd.ExecuteNonQuery();
}
catch
{
}
finally
{
con.Close();
}
.
.
.
//similarily update rest of the tables
.
.
.
Response.Redirect(Request.Url.ToString());
}
}
当我运行这段代码,一切都发生顺利,但是当我们在同一时间更新在网格多行,于更新只出现对于第一个编辑的行,其他编辑的行保持不变。
我知道这一定是我错过了这里一个非常小的事情,但我不能够继续进行:(
对此事的任何帮助,高度赞赏。在此先感谢!
PS-我使用ASP.Net 3.5,用C#为后面的代码和SQL Server 2005作为后端。
实际上数据库是一样的,只是表格是不同的,并且我根本不知道LINQ(甚至没有一个noob在它:s) – Anchit 2010-08-27 14:28:16
是的,我忘了在我的问题中添加这个:我知道这可以在代码背后以困难的方式完成,运行一个循环。但是,有没有更简单,无障碍的方法呢?像一些数据控制,会让这种情况下的生活变得更容易一些? – Anchit 2010-08-27 14:33:22