在使用asp.net时,关键字'join'附近的语法不正确,第二部分。

11 浏览
0 Comments

在使用asp.net时,关键字'join'附近的语法不正确,第二部分。

请注意,我仍然是一个数据库的初学者,但愿意学习!这个问题与Incorrect syntax near the keyword 'JOIN'. using asp.net有关。但这一次,我想知道如何从数据库中更新数据。我尝试了这段代码,但它给了我一个错误:“Incorrect syntax near the keyword '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 parameterGuitarItems = new List();
            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是外键,引用了表brand的主键,也叫brandId):

itemId     brandId     model

1             1               xyz

2             1               abc

3             2               hjk

表brand(它有一个名为brandId的主键,被strinInstrumentItem表引用):

brandId     name     image

1             Ibanez       xyz.jpg

2             Fender       abc.jpg

3             Gibson       hjk.jpg

主要目标是通过我的gridview更新表brand中的name列。例如,对于brandId#1,name等于Ibanez,我想将其更改为Jackson。它应该能够在没有异常错误的情况下工作。如何查询这个问题?

0
0 Comments

在使用ASP.NET时,出现了"错误的语法附近关键字'join'"的问题。原因是使用了错误的SQL语法。解决方法是根据数据库类型使用正确的语法。

首先,假设使用的是SQL Server,那么正确的语法如下:

UPDATE sii
SET 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 = );

如果只是想要更新数据表中的brandId字段,那么可以简化为:

UPDATE sii
SET brandId = 
FROM stringInstrumentItem sii 
WHERE sii.brandId IN (SELECT b.brandId FROM brand b WHERE b.name = );

或者,在任何数据库中都适用的版本:

UPDATE stringInstrumentItem
SET brandId = 
WHERE brandId IN (SELECT b.brandId FROM brand b WHERE b.name = );

然而,尽管以上解决方案可以在更新数据时正常运行,但会出现"Conversion failed when converting the nvarchar value 'Dean' to data type int."错误。显然,这个错误是由于将包含字符串'Dean'的字段作为整数进行处理所导致的。根据问题描述,无法得知具体原因,需要检查参数是否具有正确的类型。

最后,如果不需要进行任何设置,为什么要使用"update"语句呢?可以直接使用查询语句进行操作。

0