![](/img/trans.png)
[英]Incorrect syntax near the keyword 'Key'. Error in ASP.net DetailsView
[英]Incorrect syntax near the keyword 'join' using asp.net part 2
注意我仍然是数据库的初学者,但愿意学习! 此问题与关键字“ JOIN”附近的语法不正确有关。 使用asp.net 。 但是这次,我想知道如何从数据库更新数据。 我已经尝试过此代码,但它给我一个错误“关键字'JOIN'附近的语法不正确”。 请帮助我解决这一问题。
string queryGuitarItems = "UPDATE stringInstrumentItem JOIN brand ON stringInstrumentItem.brandId = brand.brandId SET stringInstrumentItem.brandId = @brandId IN (SELECT brand.brandId FROM brand WHERE name = @oldBrandName";
using (SqlConnection connectionGuitarItems = new SqlConnection(ConfigurationManager.ConnectionStrings["musicStoreConnection"].ToString()))
{
using (SqlCommand commandGuitarItems = new SqlCommand(queryGuitarItems, connectionGuitarItems))
{
List<SqlParameter> parameterGuitarItems = new List<SqlParameter>();
parameterGuitarItems.Add(new SqlParameter("@brandId", newName.Text));
parameterGuitarItems.Add(new SqlParameter("@oldBrandName", oldName));
connectionGuitarItems.Open();
GetParameterGuitarItems(commandGuitarItems,parameterGuitarItems.ToArray());
commandGuitarItems.ExecuteNonQuery();
connectionGuitarItems.Close();
commandGuitarItems.Parameters.Clear();
}
}
这也是GerParameterGuitarItems方法的代码:
public void GetParameterGuitarItems(SqlCommand command, params SqlParameter[] parameterGuitarItems)
{
if (parameterGuitarItems != null && parameterGuitarItems.Any())
{
command.Parameters.AddRange(parameterGuitarItems);
}
}
附加信息:
表stringInstrumentItem(列brandId是外键,并引用表品牌的主键,也称为brandId):
itemId brandId模型
1 1 xyz
2 1 abc
3 2小时
表brand(具有由表strinInstrumentItem引用的主键brandID):
brandId名称图片
1伊瓦涅兹xyz.jpg
2挡泥板abc.jpg
3吉布森hjk.jpg
主要目标是通过我的gridview更新表品牌中的名称列。 例如,在brandId#1中,名称等于Ibanez,我想将其更改为Jackson。 它应该能够正常工作而不会出现异常错误。 如何查询这个?
我猜您正在使用SQL Server(有关c#标记的信息)。 如果是这样,则正确的语法是:
UPDATE sii
SET brandId = @brandId
FROM stringInstrumentItem sii JOIN
brand b
ON sii.brandId = b.brandId
WHERE b.brandId IN (SELECT b2.brandId FROM brand b2 WHERE b2.name = @oldBrandName);
如果我了解您要尝试执行的操作,则此操作过于复杂,并且满足以下条件:
UPDATE sii
SET brandId = @brandId
FROM stringInstrumentItem sii
WHERE sii.brandId IN (SELECT b.brandId FROM brand b WHERE b.name = @oldBrandName);
或者,在适用于任何数据库的版本中:
UPDATE stringInstrumentItem
SET brandId = @brandId
WHERE brandId IN (SELECT b.brandId FROM brand b WHERE b.name = @oldBrandName);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.