Если я правильно интерпретирую это, у вас есть входные данные в виде строк, которые вы хотите сохранить в базе данных SQL Server, и столбцы будут разных типов, таких как int
, float
и money
. Вы хотите знать, будут ли строки успешно преобразованы в соответствующий тип.
Один из способов - просто передать строки в качестве параметров в SqlCommand
с помощью параметризованного запроса , задав соответствующие типы данных SQL для ваших параметров. Когда вы выполните команду с данными, которые не будут преобразованы, вы получите FormatExceptions
.
Более конкретно, вы можете попытаться проанализировать ваши строки с соответствующим типом данных SQL. Если преобразование завершится неудачно, оно также выдаст FormatException
.
Даже если вы анализируете строки, я все равно рекомендую использовать параметризованный SQL-запрос с SqlCommand
или, что еще лучше, со строго типизированным слоем ORM, таким как Entity Framework. EF автоматически сопоставляет типы SQL с типами .Net, поэтому у вас будет автоматическая проверка типов данных, если вы попытаетесь присвоить несовместимое значение одному из свойств вашей сущности.
Код для разбора типов данных SQL:
try
{
// throws FormatExcpetion
System.Data.SqlTypes.SqlInt16 i = System.Data.SqlTypes.SqlInt16.Parse("test");
}
catch (FormatException)
{
// handle it
}
try
{
// i will be set to 10
System.Data.SqlTypes.SqlInt16 i = System.Data.SqlTypes.SqlInt16.Parse("10");
}
catch (FormatException)
{
// handle it
}