gpt4 book ai didi

c# - c#连接mysql执行存储过程报错 "Data too long for column"

转载 作者:行者123 更新时间:2023-11-30 22:32:00 25 4
gpt4 key购买 nike

我正在编写一个 C# 应用程序,它将使用带有 5 个参数的存储过程访问 MySQL 数据库:

in startTime varchar(20), 
in endTime varchar(20),
in tagID Int,
in FullDay Int,
in iteration Int

返回 3 个全为整数的变量。执行 MySQLCommand 时出现错误:“第 41 行的‘startTime’列数据太长”。

这是我的代码:

//create command
MySqlCommand cmd = new MySqlCommand("GetArchiveData", connection);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("startTime", startIn);
cmd.Parameters["startTime"].Direction = ParameterDirection.Input;

cmd.Parameters.AddWithValue("endTime", endIn);
cmd.Parameters["endTime"].Direction = ParameterDirection.Input;

cmd.Parameters.AddWithValue("tagID", tagIn);
cmd.Parameters["tagID"].Direction = ParameterDirection.Input;

cmd.Parameters.AddWithValue("FullDay", fdIn);
cmd.Parameters["FullDay"].Direction = ParameterDirection.Input;

cmd.Parameters.AddWithValue("iteration", iterationIn);
cmd.Parameters["iteration"].Direction = ParameterDirection.Input;

if (cmd.Connection.State == ConnectionState.Closed)
{
cmd.Connection.Open();
}
MySqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
TagData tagData = new TagData();
tagData.TagID = tagIn;
tagData.Dsttimestamp = Convert.ToInt32(dr["timestamp"]);
tagData.PvValue = Convert.ToInt32(dr["sp"]);
tagData.PvValue = Convert.ToInt32(dr["pv"]);

tagDataList.Add(tagData);
}
dr.Close();

this.CloseConnection();
return tagDataList;

如果有人知道为什么会发生这种情况以及为什么第一次出现在第 41 行,我们将不胜感激。

更新:

从字符串 startIn 和 endIn 中删除工作台中 MySQL 语句所需的单引号解决了该问题。 MySQL 使用单引号来定义已将 C# 变量声明为字符串的字符串。

最佳答案

看起来您的问题出在存储过程中。你看过你传递给它的 vaklue 了吗?该列的值似乎太长,因此查看传递的内容会让您确定。

关于c# - c#连接mysql执行存储过程报错 "Data too long for column",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33627777/

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