方案:
我有一個手機比較顯示各種網絡交易的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