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