繁体   English   中英

使用asp.net第2部分的关键字“ join”附近的语法不正确

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM