c# - 如何检查 SQL 列数据类型是否为 int 并在条件为真时更改
问题描述
我想检查 SQL Server Compact 列的数据类型是否为Int
,如果是,请将其更改为Float
.
但是,我刚刚收到此类型为字符串的消息,而第 7 列“金额”类型为 INT。
我目前还没有指定 SQL 查询从 INT 更改为 Float,一旦条件为真,我将添加该“金额”列的正确数据类型,该“金额”列现在是 INT。
private void CheckDataType()
{
MessageBox.Show("Checking Data Type");
string sqlcon = @"Data Source = .\Records.sdf;Persist Security Info=False";
using (SqlCeConnection conn = new SqlCeConnection(sqlcon))
{
conn.Open();
SqlCeCommand cmd = new SqlCeCommand(@"Select data_type
from information_schema.columns
where table_name = 'OutgoingChequeRecords' and column_name = 'Amount'", conn);
SqlCeDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MessageBox.Show("Reading Started");
for (int i = 0; i < reader.FieldCount; i++)
{
Type dataType = reader.GetFieldType(i);
string columnName = reader.GetName(i);
if (dataType == typeof(int))
{
// Do for integers (INT, SMALLINT, BIGINT)
MessageBox.Show("Type is INT");
}
else if (dataType == typeof(double))
{
// Do for doubles (DOUBLE, DECIMAL)
MessageBox.Show("Type is Decimal");
}
else if (dataType == typeof(string))
{
// Do for Strings (VARCHAR, NVARCHAR).
MessageBox.Show("Type is String");
}
else if (dataType == typeof(DateTime))
{
// Do for DateTime (DATETIME)
MessageBox.Show("Type is DateTime");
}
else if (dataType == typeof(byte[]))
{
// Do for Binary (BINARY, VARBINARY, NVARBINARY, IMAGE)
MessageBox.Show(columnName);
}
else if (dataType == typeof(float))
{
MessageBox.Show("Type is Float");
}
}
}
MessageBox.Show("Reading Stopped, Connection Closed");
conn.Close();
}
}
解决方案
你能检查一下吗
Type type = reader.GetFieldType(i);
switch (Type.GetTypeCode(type))
{
case TypeCode.DateTime:
break;
case TypeCode.String:
break;
default: break;
}
推荐阅读
- python - 实际数据未插入 MYSQL 数据库
- mysql - 无法登录 MySQL 服务器
- sql - SQL查询获取数据表列值中架构表行值的值
- google-bigquery - 使用实时管道时,无法从 gcs 向 bigquery 提供数据
- vue.js - Vue js - 如何在数组中迭代数组?
- android - 尽管使用了异步,为什么我仍然会收到 NetworkOnMainThreadException?
- ios - 如何删除突出显示的 pdf 注释?
- sql - 如何在两个表之间进行完全连接
- aws-glue - 使用 AWS Glue 在单独的元素中使用列名和值解析 xml
- java - 使用实现的类调用接口参数方法时出错