所有列名无效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了所有列名无效相关的知识,希望对你有一定的参考价值。

错误:
异常详细信息: System.Data.SqlClient.SqlException: 列名 'Order' 无效。
列名 'Img' 无效。
列名 'FirstChar' 无效。
列名 'Desc' 无效。
列名 'SpokespersonImg' 无效。
列名 'Idea' 无效。
列名 'IsIndexShow' 无效。
列名 'ParentId' 无效。
列名 'eName' 无效。
源错误:
行 271: comm.ExecuteScalar();
堆栈跟踪:

[SqlException (0x80131904): 列名 'Order' 无效。
列名 'Img' 无效。
列名 'FirstChar' 无效。
列名 'Desc' 无效。
列名 'SpokespersonImg' 无效。
列名 'Idea' 无效。
列名 'IsIndexShow' 无效。
列名 'ParentId' 无效。
列名 'eName' 无效。
StringBuilder field = new StringBuilder();

field.Append("[Id],[Name],[Order],[Img],[FirstChar],[Desc],[SpokespersonImg],[Idea],[IsIndexShow],[ParentId],[eName],[juserid]");

StringBuilder fieldvalue = new StringBuilder();

fieldvalue.Append("@Id, @Name, @Order, @Img, @FirstChar, @Desc, @SpokespersonImg, @Idea, @IsIndexShow, @ParentId, @eName,@juserid");

StringBuilder subSQL = new StringBuilder();
subSQL.Append("insert into product(");
subSQL.Append(field.ToString());
subSQL.Append(")values(" + fieldvalue.ToString() + ")");
int juserid = Convert.ToInt32(Session["Juserid"]);
SortedList sl = new SortedList();
sl.Add("Id", 0);
sl.Add("Name", Name);
sl.Add("Order", 1);
sl.Add("Img", brandImage);
sl.Add("FirstChar", "F");
sl.Add("Desc", "asd");
sl.Add("SpokespersonImg", "asd.jpg");
sl.Add("Idea", "asd");
sl.Add("IsIndexShow", false);
sl.Add("ParentId", 0);
sl.Add("eName", "sda");
sl.Add("juserid", juserid);
iSqlHelper.UpdateDataSet(subSQL.ToString(), sl)

public static bool UpdateDataSet(string sql, SortedList ht)


SqlConnection myCon = new SqlConnection(ConnectionString);
myCon.Open();
bool resutl = true;
SqlCommand comm = new SqlCommand();
comm.Connection = myCon;
comm.CommandType = CommandType.Text;
comm.CommandText = sql;
IEnumerator keys = ht.Keys.GetEnumerator();
IEnumerator values = ht.Values.GetEnumerator();

while (keys.MoveNext() && values.MoveNext())


SqlParameter sp = new SqlParameter();
sp.Value = values.Current.ToString();
sp.ParameterName = keys.Current.ToString();

sp.SqlDbType = SqlDbType.VarChar;

comm.Parameters.Add(sp);



comm.ExecuteScalar();
myCon.Close();

return resutl;

参考技术A 很简单啊,这说明所用的用户编号数据库里没有或者是连接数据库函数有误,所以才显示为无效,修改为数据库里面的用户编号或连接函数试试看 参考技术B 是sqlserver吧?

会不会是与数据库系统保留字冲突

比如name、order、desc 等等 ?

在字段名前后加上中括号,比如
[name] [order] 。。。。本回答被提问者采纳
参考技术C 你把执行语句打印出来看下不就知道了?

C# 中的“无效列名”

【中文标题】C# 中的“无效列名”【英文标题】:“Invalid Column Name” in C# 【发布时间】:2020-01-18 14:53:59 【问题描述】:

即使所有列都存在于 Sql Server 的表中,我在 Visual Studio 中也会收到错误“列名无效”。表列名称是 AttandanceId 但它显示“无效列名称”错误,即。 AttandanceId1 在 Sql Server 表中不存在于 Attandance

public IActionResult EmployeeReport(int id)

    var viewModel = new AttandanceViewModel();
    var EmployeeList = _dbContext.Employees.ToList();

    viewModel.DropFirstName = new SelectList(EmployeeList, "EmployeeId", "FirstName");
    viewModel.AttList = _dbContext.Attandance.Where(i => i.EmpId == id).ToList();
    ViewBag.Id = id;
    var Count = viewModel.AttList.Count();

    ViewBag.Counts = Count;
    return View(viewModel);

【问题讨论】:

你能给我们你的类Employees的结构吗? @public int EmployeeId 获取;放; [必需] public int SN get;放; 公共字符串名字 获取;放; [必需] 公共字符串姓氏 获取;放; [必需] 公共字符串性别 获取;放; [必需] 公共字符串地址 获取;放; [必需] 公共字符串电子邮件 获取;放; [ForeignKey("DeptId")] public int 部门 实体使用映射文件,如果数据库中的名称发生更改,则必须更新该文件。映射文件将数据库名称链接到 c# 中的类。类本身不足以确定问题。 是的,我完全同意@dweng 的评论。 has to be updated if the name in the database changes。顺便说一句,您能否打断点进行调试,而不是向我们提供有关您的问题的更多详细信息?您收到错误的数字行代码? 你能提供你做过的相关代码吗?另外,请提供您设计的数据库表,以便我们检查您的问题。顺便说一句,您可以编辑您的问题以添加一些示例代码。无需在注释中添加代码。 【参考方案1】:

我认为您在 sql 表中进行了一些更改,然后尝试更新未成功更新的数据模型,例如正如您提到的 AttandanceId 和 AttandanceId1 显示冲突。

简单地做

1:删除您的表或完整模型并清理您的解决方案。

2:再次添加表/模型并构建您的解决方案,每一个想法都会 很好

【讨论】:

以上是关于所有列名无效的主要内容,如果未能解决你的问题,请参考以下文章

SQL修改列名,说列名无效

列名无效是啥意思?

sql2008提示“列名无效”,但是能正常查询

java.sql.SQLException:尝试检索视图条目时列名无效

实体框架无效的列名

SQL里边提示列名无效是怎么回事呀