问题标签 [getschematable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
15875 浏览

c# - 我们如何从 getschemaTable 中获取 Column Size 和 dataType?

我是一个新手,我正在尝试从我的数据库中的某个表中检索 Column NAme、Size (max legth) 和 DataType,当我执行以下代码时希望它显示所有列类型和名称(我没有找到如何引用大小,我使用了 ColumnSize 但据说 DataColumn 不包含此方法的定义)但是在执行它时,它只显示: IsColumnSetSystem.Boolean 这是代码:

0 投票
4 回答
10497 浏览

c# - 如何使用 SqlDataReader 获取列的 DataType 和 Size?

我正在尝试获取给定的每列的数据类型以进行一些验证,我已经尝试过,getSchemaTable但它只给了我没有值的表的架构。

例如,我的数据库中有一个表和一个列名:id_declarant。我想从中检索值的数据类型和大小id_declarant

这是代码:

0 投票
1 回答
215 浏览

vb.net - 访问“IIf”条件弄乱了表的架构

我有一个 ms-access 文件,其中有一些表是通过在 db 文件中的其他表上使用连接生成的。其中一个表(称为“Pin_Codes”)在脚本中有一个访问“IIf”条件来填充该列。相同的 SQL 脚本如下。

所以表 Pin_Codes 中有 2 列名为 PINCODE(类型字符串)和 DISTRICT(类型字符串)

我在我的应用程序中导入了这个访问文件,它首先检查 accdb 文件中所有表的模式。但是当它得到 Pin_Codes 的模式时,DISTRICT 列的 max_length 大约为 577346(应该是 255,因为它是字符串类型)。PINCODE 的 max_length 可以达到 255。

即使是一个虚拟的 IIf 条件(始终具有真条件和相同的真假部分)也会产生此错误。此外,删除 DISTRICT 列的 IIf 条件(并用 tableB_column 或“NA”填充它)解决了这个问题,长度值变为 255。

我验证了源表 TableA、tableB 和 tableC 的架构,应用程序正在正确解释这些架构。

这个问题的原因可能是什么,有什么办法(除了取消“IIf”条件)来克服这个问题吗?

注意 使用 System.Data.DataTable.GetSchemaTable()、OleDB 函数来获取架构表和 JetOLEDB4​​.0 dll 获得并测试了 shema

0 投票
1 回答
265 浏览

c# - 确定 Oracle 列由序列和​​触发器填充(如 SQLServer 的标识列)

我必须确定一列是否自动填满。

大多数情况下,这是在 PrimaryKey Columns 完成的。这必须使用 Oracle 数据库以及 SQLServer 来完成。

我的问题的背景是(只是为了您更好地理解),我正在阅读规范中说的 XML 文件,元素标签与表的列名匹配。该表将由用户给出,他选择我必须解析的 xml 文件。之后,我正在寻找 xml 文件中的所有元素,如果它们与表中的列名匹配。

目前尚不清楚 xml 文件是否会给我主键信息。可能是,但也不可能。如果列的名称将在 xml 中,一切都会好起来的。但如果没有,我必须查一下

  • 我在 xml 文件中给出了一个 PK 列,还有
  • 如果该 PK 列自动填充了值

如果没有给出,我必须提出一个例外。因此,我必须确定该架构信息。

使用 SQLServer 没有问题。IsAutoIncrement 将为真,如果它是一个标识列。

我像这样读取表模式数据(仅简短示例)

现在我得到了我想要的所有信息。不幸的是,对于 Oracle,IsAutoIncrement 属性设置为 false。

我知道,如果 DBMS 没有在 Column 中声明该列,GetSchemaTable() 应该如何确定该列是否由序列设置,就像 SQLServer 所做的那样。这对我来说很清楚。

有谁知道,如何解决这个问题?确定表中的列是否被触发器内的序列填充?也许解析触发器主体?

提前感谢您的帮助

我的解决方案现在看起来像这样:

0 投票
1 回答
507 浏览

c# - C# 从查询中获取基表名称以及别名或相关名称

我正在尝试使用以下方法解析 SQL 查询:

我得到基表名称,但我还需要找到表别名。

示例查询:

我检查了正则表达式解决方案,但无法弄清楚如何提取“Author a”、“ZipCode cd”、“City c”、“[State] s”

0 投票
1 回答
369 浏览

c# - IBM.Data.DB2.Core DataReader.GetSchemaTable() 方法抛出 NotSupportedException C# .NET 标准

代码采用 C# .NET 标准

在未注释掉的最后一行抛出 NotSupportedException,并显示消息“不支持指定的方法”。

我安装了 IBM.Data.DB2.Core 的 1.2.2.100 版本,以及 11.1 版本的许可证。如果您需要更多上下文,请告诉我。

提前致谢。

0 投票
1 回答
52 浏览

c# - GetSchemaTable 中的 IsAliased 始终为空

GetSchemaTable() 始终将 IsAliased 返回为 null,并且 BaseColumnName 始终与 ColumnName 相同,即使我使用别名从存储过程中获取列数据也是如此。

SP:

C#:

0 投票
0 回答
34 浏览

sql - 如何从 SqlDataReader 获取视图名称?


从 sql 我需要获取列、表和视图名称。
使用此解决方案,我只能获取基表名称和列,但不能获取视图名称。

例如:
我的看法:

然后我得到: BaseTableName: table1
BaseColumnName:col1
ColumnName:col1

BaseTableName:table2
BaseColumnName:col2
ColumnName:col2

我无法从 sql 获取视图名称。所以我想获得 view1 而不是 table1 和 table2。我尝试了所有不同的 CommandBehavior 选项。有任何想法吗?
我使用 .NET Framework 4.7.2