SQL Server 如何检查SQL列数据类型是否为int,以及如何更改条件是否为true

z31licg0  于 2023-01-20  发布在  其他
关注(0)|答案(2)|浏览(559)

我想检查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();
    }   
}

Type is String

slhcrj9b

slhcrj9b1#

您可以简单地运行(string)cmd.ExecuteScalar();并检查其值是否为"int"。我假设在所有模式中只有一列具有相同的表名。如果有更多列,则您也可以在条件TABLE_SCHEMA = 'yourSchema'中添加该模式

pinkon5k

pinkon5k2#

请你这边查一下

Type type = reader.GetFieldType(i);

switch (Type.GetTypeCode(type))
{
    case TypeCode.DateTime:
        break;
    case TypeCode.String:
        break;
    default: break;
}

相关问题