<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      基于ArcGIS10.0和Oracle10g的空間數據管理平臺十四(C#開發)-元數據庫庫管理


      我的新浪微博:http://weibo.com/freshairbrucewoo

      歡迎大家相互交流,共同提高技術。

          由于前段時間工作很忙而且出差去了北京一個多月,所以很久沒有介紹了關于基于ArcGIS10.0和Oracle10g的空間數據管理平臺這個項目的相關功能實現了,今天開始介紹一個新的功能實現,就是元數據庫的管理。

          所謂元數據就是描述數據的數據,元數據庫就是存放描述數據的數據。元數據主要用于描述數據的特征等的數據,在很多場合下都會遇到元數據,例如文件系統里面有。這里介紹的元數據主要是指描述空間數據特征的元數據,例如屬于哪一類數據等。

          今天由于時間關系就簡單介紹一下元數據庫管理的實現。

      1.初始化顯示元數據庫信息的頭部信息

       

              /// <summary>
              /// 初始化datagridView的頭部顯示信息
              /// </summary>
              private void InitDataGridView()
              {
                  //dataGridViewX1.Rows.Clear();
                  SqlHelper sh = new SqlHelper();
                  string sql = "select id,name,description from jcsjk_databaseinfo";
                  DataSet ds = sh.ReturnDataSet(sql, "jcsjk_databaseinfo");
                  dataGridViewX1.DataSource = ds.Tables[0];
      
                  dataGridViewX1.Columns[0].HeaderText = "元數據庫ID";
                  dataGridViewX1.Columns[0].Width = 200;
                  dataGridViewX1.Columns[1].HeaderText = "元數據庫名稱";
                  dataGridViewX1.Columns[1].Width = 200;
      
                  dataGridViewX1.Columns[2].HeaderText = "元數據庫描述信息";
                  dataGridViewX1.Columns[2].Width = 200;
      
              }

      2.刪除元數據庫

             /// <summary>
              /// 刪除元數據庫
              /// </summary>
              /// <param name="sender"></param>
              /// <param name="e"></param>
              private void delMetaDatabaseBtn_Click(object sender, EventArgs e)
              {
                  //1.刪除所有表
                  if (dataGridViewX1.CurrentRow.Index < 0)
                  {
                      MessageBox.Show("請選擇需要刪除的數據庫那一行");
                      return;
                  }
                  string strDatabaseName = dataGridViewX1.Rows[dataGridViewX1.CurrentRow.Index].Cells[1].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[0].ToString().ToUpper();
                      strTemp = strTemp.Substring(strDatabaseName.Length + 1);
                      sql = "select table_name,constraint_name from user_constraints where constraint_type='R'"
                          + " and constraint_name like '" + strTemp + "%'";
                      OracleDataReader odr1 = sh.ReturnDataReader(sql);
      
                      while (odr1.Read())
                      {
                          sql = "ALTER TABLE " + odr1[0].ToString().ToUpper() + " DROP CONSTRAINT "
                              + odr1[1].ToString().ToUpper();
                          sh.ExecuteSQL(sql);
                      }
                      sql = "drop table " + odr[0].ToString().ToUpper();
                      sh.ExecuteSQL(sql);
                  }
                  //2.刪除記錄
                  Hashtable ht = new Hashtable();
                  ht.Add("name", strDatabaseName);
                  try
                  {
                      sh.Del("jcsjk_databaseinfo", "name='" + strDatabaseName + "'", ht);
                  }
                  catch (Exception)
                  {
                      LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                      "刪除元數據庫<" + strDatabaseName + ">失敗!");
                      MessageBox.Show("刪除元數據庫<" + strDatabaseName + ">失敗!");
                  }
      
                  LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                      "刪除元數據庫<" + strDatabaseName + ">成功!");
                  MessageBox.Show("刪除元數據庫<" + strDatabaseName + ">成功!");
              }


       

      3.清空元數據庫

             /// <summary>
              /// 清空元數據庫中的數據
              /// </summary>
              /// <param name="sender"></param>
              /// <param name="e"></param>
              private void clearMetaDataBtn_Click(object sender, EventArgs e)
              {
                  if (dataGridViewX1.CurrentRow.Index < 0)
                  {
                      MessageBox.Show("選擇數據庫!");
                      return;
                  }
                  SqlHelper sh = new SqlHelper();
                  string strDatabaseName = dataGridViewX1.CurrentRow.Cells[1].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[0].ToString().ToUpper();
                      try
                      {
                          sh.ExecuteSQL(sql);
                      }
                      catch (Exception)
                      {
                          LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                                  "清空元數據庫<" + strDatabaseName + ">的數據失敗!");
                          MessageBox.Show("清空元數據庫<" + strDatabaseName + ">的數據失敗!");
                          return;
                      }
                  }
                  LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                     "清空元數據庫<" + 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(FrmMain.metaUsername, "元數據庫管理",
                                  "清空元數據庫<" + strDatabaseName + ">的數據失敗!");
                              MessageBox.Show("清空元數據庫<" + strDatabaseName + ">的數據失敗!");
                          }
                  }
                  LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                     "清空元數據庫<" + strDatabaseName + ">的數據成功!");
                  MessageBox.Show("清空元數據庫<" + strDatabaseName + ">的數據成功!");
                   * */
              }


          清空元數據庫與刪除元數據庫是不同的功能,刪除元數據庫就是把存放元數據的庫都一起刪除了,但是清空元數據庫只是把庫里面的內容刪除,庫本身存在。

      4.創建元數據庫

          這是比較復雜的一個功能,因為創建一個元數據庫需要根據一定的標準來創建,這些標準都是通過xsd文件描述的,所以首先要解析這個xml的模式描述文件,然后根據解析的內容存放到相應的字段中去,具體實現如下:

              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) > 0)
                  {
                      MessageBox.Show("此元數據庫已經存在,請從新命名元數據庫!");
                      return;
                  }
      
                  Hashtable ht = new Hashtable();
                  string strContent = string.Empty;
                  DataSet ds = new DataSet();
                  //從文件標準創建
                  if (!checkBoxX1.Checked)
                  {
                      if (metaFileTxt.Text == "" || Path.GetExtension(metaFileTxt.Text).ToLower() != ".xsd")
                      {
                          errTxt.Text = "請選擇正確的XSD文件.";
                          return;
                      }
                      if (metaIDTxt.Text.Trim() == "")
                      {
                          errTxt.Text = "元數據標準ID不能為空.";
                          return;
                      }
      
                      //1.讀入xsd文件
                      ds.ReadXmlSchema(metaFileTxt.Text);
                      
                      //2.create table in tablespace
                      try
                      {
                          OracleDataSchemaAdapter odsa = new OracleDataSchemaAdapter();
                          odsa.Create(ds, true, databaseNameTxt.Text + "_", "SDE");
                      }
                      catch (ArgumentException ae)
                      {
                          LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                                  "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
                          MessageBox.Show("-- Error --" + ae.Message + "-- Instructions --");
                      }
                      catch (FileNotFoundException)
                      {
                          LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                                  "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
                          MessageBox.Show("File not found: " + metaFileTxt.Text);
                      }
                      catch (Exception)
                      {
                          LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                                  "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
                          MessageBox.Show("創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
                      }
      
                      //寫入元數據標準到數據庫
                      StreamReader sr = new StreamReader(new FileStream(metaFileTxt.Text, FileMode.Open),
                          System.Text.Encoding.GetEncoding("GB2312"));
      
                      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) <= 0)
                      {
                          XmlDocument xmlDoc = new XmlDocument();
                          xmlDoc.Load(metaFileTxt.Text);
                          XmlNodeList xnl = xmlDoc.GetElementsByTagName("xs:schema");
                          XmlNode xn = xnl[0];
                          //插入元數據標準到數據庫中,用參數才能插入,因為content字段內容太大
                          sql = "insert into jcsjk_metastand (id, name, content, org, version) values("
                              + ":id,:name,:content,:org,:version)";
                          OracleParameter[] op = new OracleParameter[5];
                          op[0] = new OracleParameter();
                          op[0].ParameterName = "id";
                          op[0].OracleType = OracleType.NVarChar;
                          op[0].Value = metaIDTxt.Text;
                          op[1] = new OracleParameter();
                          op[1].ParameterName = "name";
                          op[1].OracleType = OracleType.NVarChar;
      
                          string strValue = xn.ChildNodes[0].ChildNodes[1].InnerText;
                          
                          strValue = strValue.Substring(strValue.IndexOf(':') + 1);
                          op[1].Value = strValue;
                          op[2] = new OracleParameter();
                          op[2].ParameterName = "content";
                          op[2].OracleType = OracleType.Clob;
                          op[2].Value = strContent;
                          strValue = xn.ChildNodes[0].ChildNodes[2].InnerText;
                          strValue = strValue.Substring(strValue.IndexOf(':') + 1);
                          op[3] = new OracleParameter();
                          op[3].ParameterName = "org";
                          op[3].OracleType = OracleType.NVarChar;
                          op[3].Value = strValue;
                          strValue = xn.ChildNodes[0].ChildNodes[0].InnerText;
                          strValue = strValue.Substring(strValue.IndexOf(':') + 1);
                          op[4] = new OracleParameter();
                          op[4].ParameterName = "version";
                          op[4].OracleType = OracleType.NVarChar;
                          op[4].Value = strValue;
                          try
                          {
                              sh.ExecuteNonQuery(sql, op);
                          }
                          catch (Exception ex)
                          {
                              LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                                  "寫入元數據標準<" + strName + ">到數據庫失敗!");
                              MessageBox.Show("寫入元數據標準<<" + strName + ">到數據庫失敗!");
                          }
                      }
                  }
                  //從數據庫以存儲的標準創建
                  else
                  {
                      string strStandName = comboBoxEx1.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("GB2312"));
      
                          bw.Write(odr[0].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(FrmMain.metaUsername, "元數據庫管理",
                                      "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
                              MessageBox.Show("-- Error --" + ae.Message + "-- Instructions --");
                          }
                          catch (FileNotFoundException)
                          {
                              LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                                      "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
                              MessageBox.Show("File not found: " + metaFileTxt.Text);
                          }
                          catch (Exception)
                          {
                              LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                                      "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
                              MessageBox.Show("創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
                          }
                      }
                      
                  }
      
                  //插入元數據庫信息到數據庫
                  sql = "select * from jcsjk_databaseinfo where name='" + databaseNameTxt.Text + "'";
                  if (sh.GetRecordCount(sql) <= 0)
                  {
                      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(FrmMain.metaUsername, "元數據庫管理",
                              "插入元數據庫<" + databaseNameTxt.Text + ">信息到數據庫失敗!");
                          MessageBox.Show("插入元數據庫<<" + databaseNameTxt.Text + ">信息到數據庫失敗!");
                      }
                  }
      
                  LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
                             "創建元數據庫<" + databaseNameTxt.Text + ">成功!");
                  MessageBox.Show("創建元數據庫<" + databaseNameTxt.Text + ">成功!");
                  Close();
              }


          到此元數據庫的管理基本內容已經介紹完畢。

      posted @ 2012-01-31 00:41  薔薇理想人生  閱讀(532)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中文字幕无码视频手机免费看 | 亚洲男人在线天堂| 国产综合久久99久久| 国产精品国产三级国av| 中文字幕国产精品日韩| 97午夜理论电影影院| 国产精品夜夜春夜夜爽久久小说| 国产精品福利午夜久久香蕉| 亚洲欧洲日产国码高潮αv| 成人看的污污超级黄网站免费| 亚洲一区二区三区蜜桃臀| 精品久久久久久无码国产| 亚洲精品漫画一二三区| 亚洲性日韩精品一区二区三区 | 免费区欧美一级猛片| 亚洲第一精品一二三区| 色综合激情丁香七月色综合| 午夜男女爽爽影院免费视频下载| 亚洲乱理伦片在线观看中字| 久久国产一区二区日韩av| 极品人妻少妇一区二区三区| 99re6这里有精品热视频| 成人免费A级毛片无码片2022| 亚洲最新无码中文字幕久久| 欧美激情一区二区久久久| 国产精品中文字幕av| 国产精品中文一区二区| 内射老阿姨1区2区3区4区| 99久久婷婷国产综合精品青草漫画 | 无码精品人妻一区二区三区中| 亚洲日韩国产成网在线观看| 亚洲男人的天堂一区二区| 蜜臀av无码一区二区三区| 猫咪www免费人成网站| 开心婷婷五月激情综合社区| 亚洲欧美日韩精品色xxx| 亚洲精品国产无套在线观| 亚洲国产精品综合久久20| 国产偷国产偷亚洲清高网站| 国产精品尤物午夜福利| 国产精品国产三级国快看|