gpt4 book ai didi

c# - MySQL 查询中缺少关键错误

转载 作者:行者123 更新时间:2023-11-29 20:11:59 24 4
gpt4 key购买 nike

我正在 VS2015 中使用 C# 和 MySQl 来查询我的数据库。但是,当我输入的列名不是 Int 或 Datetime 类型时,数据读取器会返回错误。

但是,数据库中存在一列与我输入的数据库名称字符串相匹配。我的代码:

        string DateQuery = "SELECT timeStamp, amount, tax, name FROM log.transactions";

MySqlCommand cmd3 = new MySqlCommand(DateQuery, connectionString);

MySqlDataReader dataReader3 = cmd3.ExecuteReader();

编译时将返回错误:“mscorlib.dll 中发生了类型为‘System.Collections.Generic.KeyNotFoundException’的未处理异常

附加信息:字典中不存在给定的键。”

在 dataReader3 上。

但是,如果我从查询中删除 name(VarChar 类型)列,它将使用 timeStamp(DateTime) amount(Int) 和tax(Int) 正常编译和执行。

它指的是哪本不包含键的字典?为什么它只影响 Int 或 DateTime 以外的类型?

编辑:下面发布了完整代码

 using System;
using MySql.Data.MySqlClient;

namespace TestApp
{
class Program
{
static void Main(string[] args)
{
Program generateReport = new Program();
generateReport.Kickoff();
}

public void Kickoff()
{
string dbString = "server=XXXXXX;uid=XXXXXX;" + "pwd=XXXXX;database=XXXXX;";
MySqlConnection connectionString = new MySqlConnection(dbString);

connectionString.Open();
Console.WriteLine("\nAttempting to connect to database...");
if (connectionString.State.ToString() == "Open")
{
Console.WriteLine("Connection successful.");
}
else
{
Console.WriteLine("Connection failed. :(");
return;
}

string DateQuery = "SELECT timeStamp, amount, tax, name FROM log.transactions";

MySqlCommand cmd3 = new MySqlCommand(DateQuery, connectionString);
MySqlDataReader dataReader3 = cmd3.ExecuteReader();
}
}

}

编辑:堆栈跟踪我相信:

at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at MySql.Data.MySqlClient.CharSetMap.GetCharacterSet(DBVersion version String CharSetName)
at MySql.Data.MySqlClient.NativeDriver.GetFieldMetaData41()
at MySql.Data.MySqlClient.NativeDriver.GetFieldMetaData()
at MySql.Data.MySqlClient.NativeDriver.ReadColumnMetadata(Int32 count)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
at TestApp.Program.Kickoff() in c:\users\Testuser\documents\visual studio 2015\Projects\TestApp\TestApp\Program.cs:line 42
at TestApp.Program.Main(String[] args) in c:\users\Testuser\documents\visual studio 2015\Projects\TestApp\TestApp\Program.cs:line 13
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

最佳答案

尝试这样命名:

   SELECT timeStamp, amount, tax,  `name` FROM log.transactions

关于c# - MySQL 查询中缺少关键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40032697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com