首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GET查询中列之间的类型不匹配。当只返回NULL时,如何定义返回列类型?

GET查询中列之间的类型不匹配。当只返回NULL时,如何定义返回列类型?
EN

Stack Overflow用户
提问于 2021-08-09 12:27:17
回答 1查看 33关注 0票数 0

我有一个现有的空DataTable,其中包含4列A、B、C、D:

代码语言:javascript
运行
AI代码解释
复制
DataTable dataTable = new DataTable
{
    Columns = 
    {
        new DataColumn("A", typeof(string)){ AllowDBNull = true },
        new DataColumn("B", typeof(string)){ AllowDBNull = true },
        new DataColumn("C", typeof(string)){ AllowDBNull = true },
        new DataColumn("D", typeof(string)){ AllowDBNull = true }
    }
} 

我想用数据库中的数据填充该表。数据库只包含列C和D,所以我想用NULL填充前2列。

所以我打电话给:

代码语言:javascript
运行
AI代码解释
复制
await using DbConnection connection = new SqliteConnection("Data Source=MyDatabase.db");
await using DbCommand command = connection.CreateCommand();
string selectCommand = $"SELECT NULL as 'A', NULL as 'B', C, D FROM Table ";
command.CommandText = selectCommand;

await connection.OpenAsync().ConfigureAwait(false);
await using DbDataReader reader = await command.ExecuteReaderAsync().ConfigureAwait(false);
dataTable.Load(reader);
await connection.CloseAsync().ConfigureAwait(false);

一旦我讲到这一行:

代码语言:javascript
运行
AI代码解释
复制
dataTable.Load(reader);

应用程序崩溃,并出现异常:

代码语言:javascript
运行
AI代码解释
复制
System.InvalidOperationException: 'Inconvertible type mismatch between SourceColumn 'A' of Byte[] and the DataColumn 'A' of String.'

是否可以修改代码,使返回的列'A‘不是byte[],而是一个字符串。我尝试使用:

代码语言:javascript
运行
AI代码解释
复制
string selectCommand = $"SELECT CAST(NULL as TEXT) as 'A', CAST(NULL as TEXT) as 'B', C, D FROM Table ";

但它不起作用。它会抛出同样的异常。当我使用空字符串而不是NULL时,它可以工作,但我希望它们是NULL,而不需要任何额外的迭代工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-09 12:54:18

好吧,史蒂夫给了我一个似乎有效的解决方案。你只需要避免使用前两列:

代码语言:javascript
运行
AI代码解释
复制
string selectCommand = $"SELECT C, D FROM Table ";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68718206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文