我想更新数据库中的数据,但我想使用条件Where 以下代码适用于插入数据.... 类中的这段代码(DB_Access)
public static string CreateInsertSql(string table, IDictionary<string, string> parameterMap)
{
var keys = parameterMap.Keys.ToList();
// ToList() LINQ extension method used because order is NOT
// guaranteed with every implementation of IDictionary<TKey, TValue>
var sql = new StringBuilder("INSERT INTO ").Append(table).Append("(");
for (var i = 0; i < keys.Count; i++)
{
sql.Append(keys[i]);
if (i < keys.Count - 1)
sql.Append(", ");
}
sql.Append(") VALUES(");
for (var i = 0; i < keys.Count; i++)
{
sql.Append('@').Append(keys[i]);
if (i < keys.Count - 1)
sql.Append(", ");
}
return sql.Append(")").ToString();
}
public void SqlInsert(string table, IDictionary<string, string> parameterMap)
{
if (conn.State.ToString() == "Closed")
{
conn.Open();
}
{
using (var command = conn.CreateCommand())
{
command.Connection = conn;
command.CommandText = CreateInsertSql(table, parameterMap);
foreach (var pair in parameterMap)
command.Parameters.Add(pair.Key, pair.Value);
command.ExecuteNonQuery();
}
}
}
使用以下代码实现( DB_Access access = new DB_Access(); )
access.SqlInsert("`seal`", new Dictionary<string, string>()
{
{ "s_name",txt_item.Text },
{ "s_qty",txt_qty.Value.ToString() },
{ "s_sn",txt_sn.Text },
{ "s_moon",txt_moon.Text },
{ "s_market",txt_market.Text },
{ "s_date", txt_date.Value.ToString("yyyyMMdd") },
{ "s_detiles",txt_det.Text },
{ "s_pay",groupBox2.Text },
});
&GT; 但我使用此代码更新数据..但不工作 ....在DB_Access课程中
public static string CreateEditSql(string table, IDictionary<string, string> parameterMap)
{
var keys = parameterMap.Keys.ToList();
// ToList() LINQ extension method used because order is NOT
// guaranteed with every implementation of IDictionary<TKey, TValue>
var sql = new StringBuilder("UPDATE ").Append(table).Append(" SET ");
for (var i = 1; i < keys.Count; i++)
{
sql.Append(keys[i]).Append(" = @").Append(keys[i]);
if (i < keys.Count - 1)
sql.Append(", ");
}
return sql.Append(" WHERE ").Append(keys[0]).Append(" = @").Append(keys[0]).ToString();
}
public void SqlEdit(string table, IDictionary<string, string> parameterMap)
{
if (conn.State.ToString() == "Closed")
{
conn.Open();
}
{
using (var command = conn.CreateCommand())
{
command.Connection = conn;
command.CommandText = CreateEditSql(table, parameterMap);
foreach (var pair in parameterMap)
command.Parameters.Add(pair.Key, pair.Value);
command.ExecuteNonQuery();
}
}
}
消息错误(已添加具有相同键的项目) ....
查询问题取决于员工的姓名不是id ..我需要编辑姓名.......请帮帮我
答案 0 :(得分:0)
解决:
public static string CreateEditSql(string table, IDictionary<string, string> parameterMap, string werename, string weretext)
{
var keys = parameterMap.Keys.ToList();
// ToList() LINQ extension method used because order is NOT
// guaranteed with every implementation of IDictionary<TKey, TValue>
var sql = new StringBuilder("UPDATE ").Append(table).Append(" SET ");
for (var i = 0; i < keys.Count; i++)
{
sql.Append(keys[i]).Append(" = @").Append(keys[i]);
if (i < keys.Count - 1)
sql.Append(", ");
}
return sql.Append(" WHERE ").Append("`").Append(werename).Append("`").Append(" = ").Append(weretext).ToString();
}
public void SqlEdit(string table, IDictionary<string, string> parameterMap,string werename , string weretext)
{
if (conn.State.ToString() == "Closed")
{
conn.Open();
}
{
using (var command = conn.CreateCommand())
{
command.Connection = conn;
command.CommandText = CreateEditSql(table, parameterMap,werename,weretext);
foreach (var pair in parameterMap)
command.Parameters.Add(pair.Key, pair.Value);
command.ExecuteNonQuery();
}
}
}
access.SqlEdit("`employee`", new Dictionary<string, string>()
{
// { "e_name",txt_nameedit.Text },
{ "e_name",txt_name.Text },
// { "e_pic",ImageData.ToString() },
// { "e_datebegin",txt_bigdate.Value.ToString("yyyyMMdd") },
//{ "e_datebirth",txt_date.Value.ToString("yyyyMMdd") },
//{ "e_loc",txt_loc.Text },
// { "e_mony",txt_mony.Text },
// { "e_mob",txt_mob.Text },
// { "e_use",txt_user.Text },
// { "e_pass",txt_pass.Text },
// { "e_prv",txt_prv.Text },
}, "e_name", txt_nameedit.Text);