知识大全 元数据库库管理

Posted 数据库

篇首语:男人无志,钝铁无钢,女人无志,乱草无秧。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 元数据库库管理相关的知识,希望对你有一定的参考价值。

  所谓元数据就是描述数据的数据 元数据库就是存放描述数据的数据 元数据主要用于描述数据的特征等的数据 在很多场合下都会遇到元数据 例如文件系统里面有 这里介绍的元数据主要是指描述空间数据特征的元数据 例如属于哪一类数据等

  今天由于时间关系就简单介绍一下元数据库管理的实现

   初始化显示元数据库信息的头部信息

  [csharp] view plaincopy /// <summary> /// 初始化datagridView的头部显示信息/// </summary> private void InitDataGridView()

   //dataGridViewX Rows Clear() SqlHelper sh = new SqlHelper() string sql = select id name description from jcsjk_databaseinfo DataSet ds = sh ReturnDataSet(sql jcsjk_databaseinfo ) dataGridViewX DataSource = ds Tables[ ]

  dataGridViewX Columns[ ] HeaderText = 元数据库ID dataGridViewX Columns[ ] Width = dataGridViewX Columns[ ] HeaderText = 元数据库名称 dataGridViewX Columns[ ] Width =

  dataGridViewX Columns[ ] HeaderText = 元数据库描述信息 dataGridViewX Columns[ ] Width =

   删除元数据库

  [csharp] view plaincopy /// <summary> /// 删除元数据库/// </summary> /// <param name= sender ></param> /// <param name= e ></param> private void delMetaDatabaseBtn_Click(object sender EventArgs e)

   // 删除所有表if (dataGridViewX CurrentRow Index < )

   MessageBox Show( 请选择需要删除的数据库那一行 ) return string strDatabaseName = dataGridViewX Rows[dataGridViewX CurrentRow Index] Cells[ ] Value ToString() SqlHelper sh = new SqlHelper() string sql = select table_name from user_tables where table_name like + strDatabaseName ToUpper() + /_% ESCAPE / OracleDataReader odr = sh ReturnDataReader(sql)

  while (odr Read())

   //删除关联外键string strTemp = odr[ ] ToString() ToUpper() strTemp = strTemp Substring(strDatabaseName Length + ) sql = select table_name constraint_name from user_constraints where constraint_type= R + and constraint_name like + strTemp + % OracleDataReader odr = sh ReturnDataReader(sql)

  while (odr Read())

   sql = ALTER TABLE + odr [ ] ToString() ToUpper() + DROP CONSTRAINT + odr [ ] ToString() ToUpper() sh ExecuteSQL(sql) sql = drop table + odr[ ] ToString() ToUpper() sh ExecuteSQL(sql) // 删除记录Hashtable ht = new Hashtable() ht Add( name strDatabaseName) try sh Del( jcsjk_databaseinfo name= + strDatabaseName + ht) catch (Exception)

   LogHelp writeLog(taUsername 元数据库管理 删除元数据库< + strDatabaseName + >失败! ) MessageBox Show( 删除元数据库< + strDatabaseName + >失败! )

  LogHelp writeLog(taUsername 元数据库管理 删除元数据库< + strDatabaseName + >成功! ) MessageBox Show( 删除元数据库< + strDatabaseName + >成功! )

   清空元数据库

  [csharp] view plaincopy /// <summary> /// 清空元数据库中的数据/// </summary> /// <param name= sender ></param> /// <param name= e ></param> private void clearmetaDataBtn_Click(object sender EventArgs e)

   if (dataGridViewX CurrentRow Index < )

   MessageBox Show( 选择数据库! ) return SqlHelper sh = new SqlHelper() string strDatabaseName = dataGridViewX CurrentRow Cells[ ] Value ToString() //NewDataSet nds = new NewDataSet() string sql = string Empty sql = select table_name from user_tables where table_name like + strDatabaseName ToUpper() + /_% ESCAPE / OracleDataReader odr = sh ReturnDataReader(sql)

  while (odr Read())

   sql = delete from + odr[ ] ToString() ToUpper() try sh ExecuteSQL(sql) catch (Exception)

   LogHelp writeLog(taUsername 元数据库管理 清空元数据库< + strDatabaseName + >的数据失败! ) MessageBox Show( 清空元数据库< + strDatabaseName + >的数据失败! ) return LogHelp writeLog(taUsername 元数据库管理 清空元数据库< + strDatabaseName + >的数据成功! ) MessageBox Show( 清空元数据库< + strDatabaseName + >的数据成功! ) /* foreach (DataTable dt in nds Tables)

   string strTableName = strDatabaseName + _ + dt TableName sql = select * from + strTableName DataSet ds = new DataSet()

  OracleDataAdapter oda = new OracleDataAdapter(sql ConfigurationSettings AppSettings[ ConnectionString ]) try oda Fill(ds) oda Update(dt) catch (Exception ex)

   LogHelp writeLog(taUsername 元数据库管理 清空元数据库< + strDatabaseName + >的数据失败! ) MessageBox Show( 清空元数据库< + strDatabaseName + >的数据失败! ) LogHelp writeLog(taUsername 元数据库管理 清空元数据库< + strDatabaseName + >的数据成功! ) MessageBox Show( 清空元数据库< + strDatabaseName + >的数据成功! ) * */

  清空元数据库与删除元数据库是不同的功能 删除元数据库就是把存放元数据的库都一起删除了 但是清空元数据库只是把库里面的内容删除 库本身存在

   创建元数据库

  这是比较复杂的一个功能 因为创建一个元数据库需要根据一定的标准来创建 这些标准都是通过xsd文件描述的 所以首先要解析这个xml的模式描述文件 然后根据解析的内容存放到相应的字段中去 具体实现如下

  [csharp] view plaincopy private void createBtn_Click(object sender EventArgs e)

   SqlHelper sh = new SqlHelper() string sql = string Empty

  if (databaseIDTxt Text Trim() == || databaseNameTxt Text Trim() == )

   errTxt Text = 数据库ID或名称不能为空 return

  //查看元数据库是否存在sql = select * from jcsjk_databaseinfo where name= + databaseNameTxt Text +

  if (sh GetRecordCount(sql) > )

   MessageBox Show( 此元数据库已经存在 请从新命名元数据库! ) return

  Hashtable ht = new Hashtable() string strContent = string Empty DataSet ds = new DataSet() //从文件标准创建if (!checkBoxX Checked)

   if (metaFileTxt Text == || Path GetExtension(metaFileTxt Text) ToLower() != xsd )

   errTxt Text = 请选择正确的XSD文件 return if (metaIDTxt Text Trim() == )

   errTxt Text = 元数据标准ID不能为空 return

  // 读入xsd文件ds ReadXmlSchema(metaFileTxt Text)

  // create table in tablespace try OracleDataSchemaAdapter odsa = new OracleDataSchemaAdapter() odsa Create(ds true databaseNameTxt Text + _ SDE ) catch (ArgumentException ae)

   LogHelp writeLog(taUsername 元数据库管理 创建元数据库< + databaseNameTxt Text + >失败! ) MessageBox Show( —— Error —— + ae Message + —— Instructions —— ) catch (FileNotFoundException)

   LogHelp writeLog(taUsername 元数据库管理 创建元数据库< + databaseNameTxt Text + >失败! ) MessageBox Show( File not found + metaFileTxt Text) catch (Exception)

   LogHelp writeLog(taUsername 元数据库管理 创建元数据库< + databaseNameTxt Text + >失败! ) MessageBox Show( 创建元数据库< + databaseNameTxt Text + >失败! )

  //写入元数据标准到数据库StreamReader sr = new StreamReader(new FileStream(metaFileTxt Text FileMode Open) System Text Encoding GetEncoding( GB ))

  while (!sr EndOfStream)

   strContent += sr ReadLine() sr Close() string strName = Path GetFileNameWithoutExtension(metaFileTxt Text) // sql = select * from jcsjk_databaseinfo where name= + strName + if (sh GetRecordCount(sql) <= )

   XmlDocument xmlDoc = new XmlDocument() xmlDoc Load(metaFileTxt Text) XmlNodeList xnl = xmlDoc GetElementsByTagName( xs schema ) XmlNode xn = xnl[ ] //插入元数据标准到数据库中 用参数才能插入 因为content字段内容太大sql = insert into jcsjk_metastand (id name content version) values( + id name content version) OracleParameter[] op = new OracleParameter[ ] op[ ] = new OracleParameter() op[ ] ParameterName = id op[ ] OracleType = OracleType NVarChar op[ ] Value = metaIDTxt Text op[ ] = new OracleParameter() op[ ] ParameterName = name op[ ] OracleType = OracleType NVarChar

  string strValue = xn ChildNodes[ ] ChildNodes[ ] InnerText

  strValue = strValue Substring(strValue IndexOf( ) + ) op[ ] Value = strValue op[ ] = new OracleParameter() op[ ] ParameterName = content op[ ] OracleType = OracleType Clob op[ ] Value = strContent strValue = xn ChildNodes[ ] ChildNodes[ ] InnerText strValue = strValue Substring(strValue IndexOf( ) + ) op[ ] = new OracleParameter() op[ ] ParameterName = op[ ] OracleType = OracleType NVarChar op[ ] Value = strValue strValue = xn ChildNodes[ ] ChildNodes[ ] InnerText strValue = strValue Substring(strValue IndexOf( ) + ) op[ ] = new OracleParameter() op[ ] ParameterName = version op[ ] OracleType = OracleType NVarChar op[ ] Value = strValue try sh ExecuteNonQuery(sql op) catch (Exception ex)

   LogHelp writeLog(taUsername 元数据库管理 写入元数据标准< + strName + >到数据库失败! ) MessageBox Show( 写入元数据标准<< + strName + >到数据库失败! ) //从数据库以存储的标准创建else string strStandName = boBoxEx SelectedItem ToString()

  sql = select content from jcsjk_metastand where name= + strStandName + OracleDataReader odr = sh ReturnDataReader(sql) if (odr Read())

   StreamWriter bw = new StreamWriter(new FileStream( temp xsd FileMode Create) System Text Encoding GetEncoding( GB ))

  bw Write(odr[ ] ToString())

  bw Close() ds ReadXmlSchema( temp xsd ) System IO File Delete( temp xsd ) try OracleDataSchemaAdapter odsa = new OracleDataSchemaAdapter() odsa Create(ds true databaseNameTxt Text + _ SDE ) catch (ArgumentException ae)

   LogHelp writeLog(taUsername 元数据库管理 创建元数据库< + databaseNameTxt Text + >失败! ) MessageBox Show( —— Error —— + ae Message + —— Instructions —— ) catch (FileNotFoundException)

   LogHelp writeLog(taUsername 元数据库管理 创建元数据库< + databaseNameTxt Text + >失败! ) MessageBox Show( File not found + metaFileTxt Text) catch (Exception)

   LogHelp writeLog(taUsername 元数据库管理 创建元数据库< + databaseNameTxt Text + >失败! ) MessageBox Show( 创建元数据库< + databaseNameTxt Text + >失败! )

  

  //插入元数据库信息到数据库sql = select * from jcsjk_databaseinfo where name= + databaseNameTxt Text + if (sh GetRecordCount(sql) <= )

   ht Clear() ht Add( ID databaseIDTxt Text) ht Add( NAME databaseNameTxt Text) if (descriptionText Text != )

   ht Add( DESCRIPTION descriptionText Text) try sh Insert( jcsjk_databaseinfo ht) catch (Exception)

   LogHelp writeLog(taUsername 元数据库管理 插入元数据库< + databaseNameTxt Text + >信息到数据库失败! ) MessageBox Show( 插入元数据库<< + databaseNameTxt Text + >信息到数据库失败! )

cha138/Article/program/ASP/201311/21847

相关参考

知识大全 Oracle 8 数据库函数库的列举与具体介绍

Oracle8数据库函数库的列举与具体介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  OCI

知识大全 .Net编写类库直接操作MySql数据库应用实例

.Net编写类库直接操作MySql数据库应用实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 在异种机之间实现数据库迁移

  在异种机之间进行数据库迁移是一件麻烦的事但有时候为了进行数据库升级或其他原因又必须进行这种操作我在工作中就遇到了这种情况要求是将原来在vax机(操作系统为openvms)上的生产管理库procdb

库拉木勒克乡召开复播玉米田间管理现场会

2014年8月15日,库拉木勒克乡在巴什克其克村召开复播玉米田间管理现场会,乡长买合木提·麦麦提敏、乡  副书记卡米力·吐尔孙,乡技术推广站的全体干部、巴士克其克村农民等135余人参加了现场会。  技

库拉木勒克乡召开复播玉米田间管理现场会

2014年8月15日,库拉木勒克乡在巴什克其克村召开复播玉米田间管理现场会,乡长买合木提·麦麦提敏、乡  副书记卡米力·吐尔孙,乡技术推广站的全体干部、巴士克其克村农民等135余人参加了现场会。  技

智能建筑汽车库管理系统甲级标准应符合的条件?

1)应具有如下功能:  &mdash;&mdash;入口处车位显示;  &mdash;&mdash;出入口及场内通道的行车指示;  &mdash;&md

智能建筑汽车库管理系统甲级标准应符合的条件?

1)应具有如下功能:  &mdash;&mdash;入口处车位显示;  &mdash;&mdash;出入口及场内通道的行车指示;  &mdash;&md

知识大全 用 VC 开 发 Oracle 数 据 库 应 用 程 序

用VC开发Oracle数据库应用程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ____Or

智能建筑汽车库(场)管理系统乙级标准应符合的条件?

  二锅头  1)应具有如下功能:  &mdash;&mdash;入口处车位显示;  &mdash;&mdash;出入口及场内通道的行车指示;  &mdash;

智能建筑汽车库(场)管理系统乙级标准应符合的条件?

  二锅头  1)应具有如下功能:  &mdash;&mdash;入口处车位显示;  &mdash;&mdash;出入口及场内通道的行车指示;  &mdash;