我想检查SQL Server Compact列的数据类型是否为Int
,如果是,请将其更改为Float
。
但是,我刚刚收到的消息类型是String,而第7列“Amount”类型是INT。
我还没有指定SQL查询的时刻,以改变从INT浮点,我会添加一旦条件,它拿起真,并获得正确的数据类型的“金额”列,这是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();
}
}
2条答案
按热度按时间slhcrj9b1#
您可以简单地运行
(string)cmd.ExecuteScalar();
并检查其值是否为"int"
。我假设在所有模式中只有一列具有相同的表名。如果有更多列,则您也可以在条件TABLE_SCHEMA = 'yourSchema'
中添加该模式pinkon5k2#
请你这边查一下