2013-12-07 2 views
1

Я разрабатываю приложение в VS2010 C# для извлечения данных из одной строки из SQL Server и вставляет его в MySQL.Данные, усеченные для столбца «Значение1» в строке 1 в C#

В этом примере я извлекаю данные и пытаюсь вставить в 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. 

Я получаю данные об ошибках усечены для столбца «Value1» в строке 1. Я не знаю, как он дает эту ошибку.

Схема моей базы данных приведена ниже.

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; 

Посоветуйте мне, как это решить.

+0

, что данные, которые вы пытаетесь вставить в 'Value1 '? – bansi

+0

@ bansi Я просто вставляю 4-5-значный номер –

+0

Интересно, какой у вас тип данных для переменной 'Value1'? Или вы пытались отладить, предоставив точку останова на строке «Value1»? – Edper

ответ

2

float 32 бит одинарной точности как в C# и mySQL, так что если ваш Value1 вдвое то 64 бит двойной точности, то у вас есть проблемы там. Я не говорю , что ваше Value1 двойное, но это только предположение. Итак, почему бы не превратить ваш Value1 плавать либо из следующих ниже:

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

или

mcmd.Parameters.AddWithValue("@Value1", float.Parse(Value1.ToString())); 

или

mcmd.Parameters.AddWithValue("@Value1", (float)Value1); 
1

Вы можете проверить пустые значения перед вставкой, так как Пустое значение не равно 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 
} 
1

вероятно Вы пытаетесь вставить данные дольше, чем определение столбца, изменить определение поплавка для размещения it.Maybe использовать double.

+0

Я просто пытаюсь вставить в нее 4-5-значный номер. Разве не так много магазинов, способных поплавать? –

+0

Нет, он должен работать. Строй. Что происходит, когда вы указываете длину FLOAT (8,2)? – Mihai

+0

Не работает .. никаких других шансов .. ??? –

Смежные вопросы