How can I determine whether a column exists in a SQL Server CE table with C#?

前端 未结 2 617
别那么骄傲
别那么骄傲 2020-12-19 14:32

The legacy code does it this way:

public bool isValidField(string tableName, string fieldName)
{
    bool retVal;
    string tblQuery = string.Format(\"SELEC         


        
相关标签:
2条回答
  • 2020-12-19 15:20
        public bool IsValidField(SqlCeConnection objCon, string tableName, string columnName)
        {
            const string query = "SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS"
                                    + " WHERE TABLE_NAME = @TABLENAME AND"
                                    + " COLUMN_NAME = @COLUMNNAME";
    
            using (var cmd = new SqlCeCommand(query, objCon))
            {
                cmd.Parameters.Add("@TABLENAME", SqlDbType.NVarChar, 128).Value = tableName;
                cmd.Parameters.Add("@COLUMNNAME", SqlDbType.NVarChar, 128).Value = columnName;
                var objvalid = cmd.ExecuteScalar(); // will return 1 or null
                return objvalid != null;
            }
        }
    
    0 讨论(0)
  • 2020-12-19 15:27

    You can just query the information schema tables to get the information you want:

    public bool isValidField(string tableName, string columnName)
    {
        var tblQuery = "SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS"
                       + " WHERE TABLE_NAME = @tableName AND"
                       + " COLUMN_NAME = @columnName";
    
        SqlCeCommand cmd = objCon.CreateCommand();
        cmd.CommandText = tblQuery;
        var tblNameParam = new SqlCeParameter(
            "@tableName",
            SqlDbType.NVarChar,
            128);
    
        tblNameParam.Value = tableName
        cmd.Parameters.Add(tblNameParam);
        var colNameParam = new SqlCeParameter(
            "@columnName",
            SqlDbType.NVarChar,
            128);
    
        colNameParam.Value = columnName
        cmd.Parameters.Add(colNameParam);
        object objvalid = cmd.ExecuteScalar(); // will return 1 or null
        return objvalid != null;
    }
    
    0 讨论(0)
提交回复
热议问题