C# 列'的数据被截断;值1';在C中的第1行#

C# 列'的数据被截断;值1';在C中的第1行#,c#,mysql,insert,insert-update,C#,Mysql,Insert,Insert Update,我正在VS2010 c#中开发一个应用程序,从SQL Server获取单行数据并将其插入MySQL 在本文中,我获取数据并尝试使用下面的代码插入MySQL var msCon = new MySqlConnection(Properties.Settings.Default.dConstr);//open MySql connection var mcmd = msCon.CreateCommand(); conSsDate = D

我正在VS2010 c#中开发一个应用程序,从SQL Server获取单行数据并将其插入MySQL

在本文中,我获取数据并尝试使用下面的代码插入MySQL

var msCon = new MySqlConnection(Properties.Settings.Default.dConstr);//open MySql connection
                var mcmd = msCon.CreateCommand();
                conSsDate = DateTime.Parse(ssDate).ToString("yyyy-MM-dd HH:mm:ss");
                mcmd.CommandText = "INSERT INTO sfr_raw_aqi(date_time,station_id,Value1,Value2,Value3,Value4,Value5,Value6,Value7,Value8,Value9) VALUES(@date_time,@station_id,@Value1,@Value2,@Value3,@Value4,@Value5,@Value6,@Value7,@Value8,@Value9)";//passing insert command.
                //adding parameters
                mcmd.Parameters.AddWithValue("@date_time", conSsDate);
                mcmd.Parameters.AddWithValue("@station_id", station);
                mcmd.Parameters.AddWithValue("@Value1", Value1);
                mcmd.Parameters.AddWithValue("@Value2", Value2);
                mcmd.Parameters.AddWithValue("@Value3", Value3);
                mcmd.Parameters.AddWithValue("@Value4", Value4);
                mcmd.Parameters.AddWithValue("@Value5", Value5);
                mcmd.Parameters.AddWithValue("@Value6", Value6);
                mcmd.Parameters.AddWithValue("@Value7", Value7);
                mcmd.Parameters.AddWithValue("@Value8", Value8);
                mcmd.Parameters.AddWithValue("@Value9", Value9);
                msCon.Open();
                int count = mcmd.ExecuteNonQuery();//executing query.
                msCon.Close();
当控制权到位时

int count = mcmd.ExecuteNonQuery();//executing query.
我正在截断第1行“Value1”列的错误数据。我不知道它是如何给出这个错误的

我的数据库模式如下

CREATE TABLE `sfr_raw_aqi` (
`r_aqi` int(11) unsigned NOT NULL AUTO_INCREMENT,
`station_id` varchar(50) DEFAULT NULL,
`date_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`Value1` float DEFAULT NULL,
`Value2` float DEFAULT NULL,
`Value3` float DEFAULT NULL,
`Value4` float DEFAULT NULL,
`Value5` float DEFAULT NULL,
`Value6` float DEFAULT NULL,
`Value7` float DEFAULT NULL,
`Value8` float DEFAULT NULL,
`Value9` float DEFAULT NULL,
`benzene` float DEFAULT NULL,
`mpxylene` float DEFAULT NULL,
`oxylene` float DEFAULT NULL,
`toluene` float DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`r_aqi`)
) ENGINE=InnoDB AUTO_INCREMENT=227 DEFAULT CHARSET=latin1;

建议我如何解决此问题。

您可以在插入之前检查空值,因为空值不等于Null

试试这个:

if(!value1.Trim().Eqlals("") && !value2.Trim().Eqlals("") && !value3.Trim().Eqlals("") &&   
!value4.Trim().Eqlals("") && !value5.Trim().Eqlals("") && !value6.Trim().Eqlals("") &&    
!value7.Trim().Eqlals(""))
{
//Execute query
}

您可以在插入之前检查空值,因为空值不等于Null

试试这个:

if(!value1.Trim().Eqlals("") && !value2.Trim().Eqlals("") && !value3.Trim().Eqlals("") &&   
!value4.Trim().Eqlals("") && !value5.Trim().Eqlals("") && !value6.Trim().Eqlals("") &&    
!value7.Trim().Eqlals(""))
{
//Execute query
}

您可能尝试插入比列定义长的数据,更改浮点定义以容纳它。可能使用
double

您可能尝试插入比列定义长的数据,更改浮点定义以适应它。如果
值1
为双精度,则可以使用
double

float
是32位单精度 如果是64位双精度,那么就有问题了。我不是说 您的值1是两倍,但这只是一个猜测。因此,为什么不通过以下任一方法将
Value1
转换为float:

mcmd.Parameters.AddWithValue("@Value1", Convert.ToSingle(Value1));


float
在和中都是32位单精度,因此如果
Value1
是双精度 如果是64位双精度,那么就有问题了。我不是说 您的值1是两倍,但这只是一个猜测。因此,为什么不通过以下任一方法将
Value1
转换为float:

mcmd.Parameters.AddWithValue("@Value1", Convert.ToSingle(Value1));


您试图在
Value1
中插入的数据是什么?@bansi我刚刚插入了4-5位数字我想知道变量
Value1
的数据类型是什么?或者您是否尝试过通过在
Value1
行提供断点进行调试?对我来说,这很有效。问题可能在C中#您尝试在
Value1
中插入的数据是什么?@bansi I刚刚插入了4-5位数字我想知道变量
Value1
的数据类型是什么?或者您是否尝试过通过在
Value1
行提供断点进行调试?对我来说很有效问题可能在C中,我只是尝试在其中插入4-5位数字。浮点不是可以存储很多吗?不,应该可以。奇怪。当指定长度浮点(8,2)时会发生什么?我只是想在其中插入4-5位数字。浮点不是可以存储那么多吗?不,应该可以。奇怪。指定长度浮点(8,2)时会发生什么?