database - 如何在空表中获取正确的 DataColumn 数据类型?

标签 database sqlite ado.net

我正在编写一些基于大量动态数据创建新的 Sqlite 数据库的 C# 代码,我卡在了一个部分,它试图确定是否需要为即将到来的新数据创建或更改列中。

通过获取 DataTable 并查看 DataColumn 数据类型和大小来处理表的现有方法在创建新表的过程中似乎不起作用,因为在所有以前的情况下,DataColumn.DataType 始终是 System.Object它已填充了用于创建表的正确类型,例如大小为 128 的字符串。使用非常简单的代码沿着...检索它

IDbCommand cmd = new SQLiteCommand("SELECT * FROM Table", connection);
reader = cmd.ExecuteReader ();
dt.Load (reader);

我手动添加了一行,其中只有一个填充列,然后瞧!它正确返回大小为 128 的字符串。由于它使用的是数据库模式(发现长度为 128)而不是我添加的行中的数据,为什么它不能使用空表?

有人可以建议解决方法吗?

最佳答案

SQLite 使用 dynamic typing ,因此您在创建表时不需要使用任何特定的数据类型。 (读取查询的列类型没有多大意义,因为您可以在同一列中获取另一种类型的值。)

关于database - 如何在空表中获取正确的 DataColumn 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19145937/

相关文章:

c# - 如何通过主键获取大量数据库表记录?

php - MySQL选择查询,连接并转换为日期两个字段并与时间间隔进行比较

具有多个服务器的 MySQL 数据库

SQLite。 DELETE 查询中的复杂条件?

c++ - 获取sqlite3中的列名

c# - 由于 SQL 字符串而重复值?

c# - 连接字符串中的初始目录与 AttachDbFilename

asp.net - 我应该在 asp.net 中使用模拟吗?

database - Entity Framework 4.0 - 从现有模型升级数据库

java - 数据库表中的特殊记录,如果发生更改,应反射(reflect)所有其他关联记录的更改