在使用asp.net时,关键字'join'附近的语法不正确,第二部分。
在使用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)) { ListparameterGuitarItems = 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。它应该能够在没有异常错误的情况下工作。如何查询这个问题?
在使用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"语句呢?可以直接使用查询语句进行操作。