【发布时间】:2013-07-23 14:41:37
【问题描述】:
首先,我不能使用任何存储过程或视图。
我知道这可能会适得其反,但这些不是我的规则。
我有一个DataTable,里面装满了数据。它有一个复制到我的 SQL 表的结构。
ID - NAME
SQL 表当前有一些数据,但我现在需要用我的DataTable 的所有数据更新它。如果 ID 匹配,则需要更新 SQl 表,或者添加到唯一的列表中。
有没有办法只在我的 WinForm 应用程序中简单地做到这一点?
到目前为止,我有:
SqlConnection sqlConn = new SqlConnection(ConnectionString);
SqlDataAdapter adapter = new SqlDataAdapter(string.Format("SELECT * FROM {0}", cmboTableOne.SelectedItem), sqlConn);
using (new SqlCommandBuilder(adapter))
{
try
{
adapter.Fill(DtPrimary);
sqlConn.Open();
adapter.Update(DtPrimary);
sqlConn.Close();
}
catch (Exception es)
{
MessageBox.Show(es.Message, @"SQL Connection", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
数据表:
DataTable dtPrimary = new DataTable();
dtPrimary.Columns.Add("pv_id");
dtPrimary.Columns.Add("pv_name");
foreach (KeyValuePair<int, string> valuePair in primaryList)
{
DataRow dataRow = dtPrimary.NewRow();
dataRow["pv_id"] = valuePair.Key;
dataRow["pv_name"] = valuePair.Value;
dtPrimary.Rows.Add(dataRow);
SQL:
CREATE TABLE [dbo].[ice_provinces](
[pv_id] [int] IDENTITY(1,1) NOT NULL,
[pv_name] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_ice_provinces] PRIMARY KEY CLUSTERED
(
[pv_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
【问题讨论】:
-
您当前的代码应该可以解决问题。是因为错误而失败,还是静默失败?这是 ASP.NET 吗?
-
@Renan,它目前只是将值添加到上表的末尾。 - 是的,我可以使用 linq
-
看这里:msdn.microsoft.com/en-us/library/awzk4kc1.aspx,你至少需要指定另一个用于更新数据的sql语句,包括唯一标识一条记录的where子句。
-
@KaiHartmann 不,你不会:msdn.microsoft.com/en-us/library/…
标签: c# asp.net sql-server