当前位置: 首页 > 编程语言 > C#

System.ArgumentException-Tabletypeparametermusthaveavalidtypename分享

时间:2023-04-10 14:44:50 C#

System.ArgumentException:Tabletypeparametermusthaveavalidtypename.类型定义为2列(org和suborg)这就是我的代码:DataSetds=newDataSet();尝试{DataTableFilteredOrgSubOrg=newDataTable("OrgSubOrgValueType");FilteredOrgSubOrg.Columns.Add("org",typeof(string));FilteredOrgSubOrg.Columns.Add("subOrg",typeof(string));FilteredOrgSubOrg.Rows.Add(org,orgsub);使用(SqlConnectionconn=newSqlConnection(cCon.getConn())){使用(SqlCommandcmd=conn.CreateCommand()){cmd.CommandText="select*frommyTableexwhereyear=@year'andqtr=@qtr"+"andEXISTS(SELECT1FROM@OrgSubOrgttWHEREex.orglikett.org"+"ANDex.orgsub=tt.suborg)"+"orderbyex.org,year,qtrDESC";//2.设置命令对象,使其知道//执行存储过程//3.向命令添加参数,该参数//将传递给存储过程cmd.Parameters.Add(newSqlParameter("@OrgSubOrg",过滤后的组织子组织));cmd.Parameters.Add(newSqlParameter("@year",year));cmd.Parameters.Add(newSqlParameter("@qtr",qtr));conn.Open();平方米lDataAdaptersqlDA=newSqlDataAdapter();sqlDA.SelectCommand=cmd;sqlDA.Fill(ds);我传递的参数错了吗?当我在SQLserver中这样做时:declare@OrgSubOrgOrgSubOrgValueTypeinsertinto@OrgSubOrgvalues('05%','00000000')insertinto@OrgSubOrgvalues('03%','00000000')------------完成----------------------------------select*frommyTableexwhereyear='2013'andqtr='1'andEXISTS(SELECT1FROM@OrgSubOrgttWHEREex.orglikett.orgANDex.orgsub=tt.suborg)orderbyex.org,year,qtrDESC一切正常它应该。我也试过像这样传递它:SqlParameterp=cmd.Parameters.Add(newSqlParameter("@OrgSubOrg",SqlDbType.Structured));p.Value=FilteredOrgSubOrg;但我得到同样的错误表类型参数'@OrgSubOrg'必须有一个有效的类型名称。可能是我无法将它传递给SQL命令,我在另一个地方有类似的代码,这对存储过程很有用......?SetthemappingtoyourtypeinSqlServerusingtheTypeNameproperty:获取或设置必须固定的表值参数的类型名称p.TypeName="dbo.MyType";检查表单值参数后请注意,当您执行存储过程并且您没有像这样将SqlCommand.CommandType设置为CommandType.StoredProcedure时也会发生这种情况:使用(SqlCommandcmd=newSqlCommand("StoredProcName",conn)){cmd.CommandType=CommandType.StoredProcedure;cmd.ExecuteNonQuery();当您想要将表参数传递给存储过程时,您也可能会遇到此错误。如果您使用实体fameworkContext.Database.SqlQuery(),就会发生这种情况。您必须为表参数设置TypeName属性。以上就是C#学习教程:System.ArgumentException:Thetabletypeparametermusthaveavalidtypename分享全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注—SqlParametercodesParam=newSqlParameter(CODES_PARAM,SqlDbType.Structured);SqlParameterfactoriesParam=newSqlParameter(FACTORIES_PARAM,SqlDbType.Structured);codesParam.Value=tbCodes;codesParam.TypeName="[dbo].[MES_CodesType]";factoriesParam.Value=tbfactories.Name;factoriesParam="[dbo].[MES_FactoriesType]";varlist=_context.Database.SqlQuery($"{SP_NAME}{CODES_PARAM},{FACTORIES_PARAM}",newSqlParameter[]{codesParam,factoriesParam}).ToList();本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: