捕捉到 System.Data.SqlClient.SqlException Message=对象名 '' 无效

lishan200012 2015-06-26 03:52:21
建立的Connecting的链接,数据是指向A。
我现在通过A的数据库链接要向B数据库中写入数据(A和B是在同一台服务器上。)
代码如下

MasterCmd = new SqlCommand("select * from B..p_material where tParentId=101", db.thisSqlconnection);
MasterAdapter = new SqlDataAdapter();
MasterAdapter.SelectCommand = MasterCmd;
MasterDt = new DataTable();
MasterAdapter.Fill(MasterDt);
上面代码是打开B数据库中p_material,是可以读取数据的

DR = MasterDt.NewRow();
......
MasterDt.Rows.Add(DR);
MasterAdapter.Update(MasterDt);
上面的代码在向B数据库中p_material插入数据时报错提示:


捕捉到 System.Data.SqlClient.SqlException Message=对象名 'p_material' 无效。
Source=.Net SqlClient Data Provider
ErrorCode=-2146232060 Class=16 LineNumber=1 Number=208
Procedure=""
Server=10.97.138.145
State=1
StackTrace:
在 System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
在 System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
在 System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
在 System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
在 System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
在 HCSZ_EMC.Film_Frm_P_Material.AddNew() 位置 C:\Users\00100146\Desktop\HCSZ_EMC\HCSZ_EMC\HCSZ_EMC\Film_Frm_P_Material.cs:行号 265
在 HCSZ_EMC.Film_Frm_P_Material.tbtSave_Click(Object sender, EventArgs e) 位置 C:\Users\00100146\Desktop\HCSZ_EMC\HCSZ_EMC\HCSZ_EMC\Film_Frm_P_Material.cs:行号 298
InnerException:

求教大神们如何解决。
(要是能新建B数据库的链接,就不存在此问题了。)
...全文
731 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishan200012 2015-06-27
  • 打赏
  • 举报
回复
引用 6 楼 duanzi_peng 的回复:
[quote=引用 5 楼 lishan200012 的回复:] [quote=引用 4 楼 duanzi_peng 的回复:] B..p_material -》 这中间是2个点号么???? 先把Sql语句在sql编译器中执行一边,看看有没有语法错误。
语法上没有问题的。[/quote] 必须重建 B数据库的链接。不同的链接 创建不同的cmd对象,对不同的数据库进行操作。 你虽然创建了 A数据库的链接,但是 cmd执行的sql语句是不知道有B这个数据库的。[/quote] 这个应该不是跟数据库的链接有关。 应该是SQLDataAdapter有关。
  • 打赏
  • 举报
回复
引用 5 楼 lishan200012 的回复:
[quote=引用 4 楼 duanzi_peng 的回复:] B..p_material -》 这中间是2个点号么???? 先把Sql语句在sql编译器中执行一边,看看有没有语法错误。
语法上没有问题的。[/quote] 必须重建 B数据库的链接。不同的链接 创建不同的cmd对象,对不同的数据库进行操作。 你虽然创建了 A数据库的链接,但是 cmd执行的sql语句是不知道有B这个数据库的。
lishan200012 2015-06-26
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
B..p_material -》 这中间是2个点号么???? 先把Sql语句在sql编译器中执行一边,看看有没有语法错误。
语法上没有问题的。
  • 打赏
  • 举报
回复
B..p_material -》 这中间是2个点号么???? 先把Sql语句在sql编译器中执行一边,看看有没有语法错误。
jijkc 2015-06-26
  • 打赏
  • 举报
回复
引用 2 楼 lishan200012 的回复:
用update B..p_material 。。。是可以的。 MasterAdapter.Fill(MasterDt)能读取出数据,为什么MasterAdapter.Update(MasterDt)不行。
估计是在A连接中执行了SQL语句,update p_material 。。。,但A数据库中没有表p_material,所以报错了,你可以用用 SQL Server Profiler 追踪这个结果看看。MasterAdapter.Update(MasterDt)这个原理那些就不看了,好久没用ado.net了 http://www.cnblogs.com/snowdream/archive/2009/02/10/use-sql-server-profiler-trace-exception.html
lishan200012 2015-06-26
  • 打赏
  • 举报
回复
用update B..p_material 。。。是可以的。 MasterAdapter.Fill(MasterDt)能读取出数据,为什么MasterAdapter.Update(MasterDt)不行。
jijkc 2015-06-26
  • 打赏
  • 举报
回复
对象名 'p_material' 无效,估计是在A连接中执行了更新找不到这张表; 建议用Execute NonQuery,再写 new SqlCommand("update B..p_material .." 试试,不要用MasterAdapter.Update(MasterDt);
内容概要:本文提出了一种基于高保真电磁暂态仿真的智能电网虚假数据注入攻击(FDIA)数据集构建与影响分析方法,依托PSCAD与MATLAB联合仿真平台,构建IEEE标准测试系统(如9节点或39节点系统)的精细化电磁暂态模型,精确模拟电网在正常运行及遭受FDIA下的动态响应过程,采集高精度、高时间分辨率的电压、电流、功率等电气量时序数据,生成具有强物理约束性和可复现性的攻击数据集。研究进一步结合现代状态估计理论、残差检测机制与机器学习分类算法,对FDIA的隐蔽性特征、攻击传播路径、系统关键变量偏移程度及暂态稳定性影响进行系统性量化评估,旨在为智能电网安全防护体系的设计、入侵检测模型的训练与攻防策略的有效性验证提供高可信度的数据基础与理论支撑。; 适合人群:面向电力系统自动化、能源互联网安全、工业控制系统安全等方向的研究生、科研人员及工程技术人员,要求具备电力系统分析、状态估计基础、MATLAB/PSCAD联合仿真能力以及基本的网络安全背景知识。; 使用场景及目标:① 复现和验证主流FDIA相关学术论文中的攻击模型与检测算法;② 构建符合实际物理规律、可用于训练深度学习或机器学习驱动的入侵检测系统(IDS)的真实攻击数据集;③ 深入探究虚假数据注入对电网暂态稳定性、继电保护动作逻辑、频率调节等关键功能的影响机理。; 阅读建议:本资源以高保真仿真为核心,强调数据生成的真实性与实验可重复性,读者应重点关注PSCAD与MATLAB之间的数据交互机制、攻击向量的设计原则与注入方式、以及多维度影响评估指标体系的构建方法,建议结合所提供的仿真模型与代码进行动手实践与结果验证。

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧