C# 列'的数据被截断;值1';在C中的第1行#
我正在VS2010 c#中开发一个应用程序,从SQL Server获取单行数据并将其插入MySQL 在本文中,我获取数据并尝试使用下面的代码插入MySQLC# 列'的数据被截断;值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
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
为双精度,则可以使用doublefloat
是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)时会发生什么?