因为要做软件升级,数据库的字段有变化。所以要判断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 + "失败"); } }