现在的位置: 首页 > 综合 > 正文

Access中判断一个表中某个字段是否存在,以及添加字段

2017年10月21日 ⁄ 综合 ⁄ 共 1185字 ⁄ 字号 评论关闭

因为要做软件升级,数据库的字段有变化。所以要判断Access中一个字段是否存在,如果不存在就增加。

以下是参考http://topic.csdn.net/t/20021119/11/1188678.html
Brunhild的解决方案,我又重写了一下。

        private bool checkField(String sTblName, String sFldName)
        {
            bool isExist=false;
            try
            {
                OleDbConnection aConnection = new OleDbConnection(DB.getConnectStr());
                aConnection.Open();

                object[] oa ={ null, null, sTblName, sFldName };

                DataTable schemaTable = aConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Columns, oa);
                if (schemaTable.Rows.Count == 0)
                {
                    isExist = false;
                }
                else
                {
                    isExist = true;
                }

                MessageBox.Show((schemaTable.Rows.Count == 0 ? "不存在" : "存在"));

                aConnection.Close();
            }
            catch (Exception err)
            {
                LogHelper.log(err.Message);
            }

            return isExist;
        }

新增加一个字段:

        //为一个表新增加一个字段
        public static void addColumnToTable(String tableName, String fieldName, String dataType)
        {
            //创建数据库连接

            OleDbConnection aConnection = new OleDbConnection(DB.getConnectStr());

            String sqlAlter = "alter table "+tableName+" add column "+fieldName+" "+dataType+";";
            OleDbCommand aCommand = new OleDbCommand(sqlAlter, aConnection);
            try
            {
                aConnection.Open();

                aCommand.ExecuteNonQuery();

                //关闭连接,这很重要     
                aConnection.Close();

                LogHelper.log("向数据库中的"+tableName+"表添加字段"+fieldName+"成功");
            }
            catch (Exception err)
            {
                LogHelper.log(err.Message);
                LogHelper.log("向数据库中的" + tableName + "表添加字段" + fieldName + "失败");
            }

        }

抱歉!评论已关闭.