<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.初始化顯示元數據庫信息的頭部信息

       1         /// <summary>
      2 /// 初始化datagridView的頭部顯示信息
      3 /// </summary>
      4 private void InitDataGridView()
      5 {
      6 //dataGridViewX1.Rows.Clear();
      7 SqlHelper sh = new SqlHelper();
      8 string sql = "select id,name,description from jcsjk_databaseinfo";
      9 DataSet ds = sh.ReturnDataSet(sql, "jcsjk_databaseinfo");
      10 dataGridViewX1.DataSource = ds.Tables[0];
      11
      12 dataGridViewX1.Columns[0].HeaderText = "元數據庫ID";
      13 dataGridViewX1.Columns[0].Width = 200;
      14 dataGridViewX1.Columns[1].HeaderText = "元數據庫名稱";
      15 dataGridViewX1.Columns[1].Width = 200;
      16
      17 dataGridViewX1.Columns[2].HeaderText = "元數據庫描述信息";
      18 dataGridViewX1.Columns[2].Width = 200;
      19
      20 }


       

      2.刪除元數據庫

       1        /// <summary>
      2 /// 刪除元數據庫
      3 /// </summary>
      4 /// <param name="sender"></param>
      5 /// <param name="e"></param>
      6 private void delMetaDatabaseBtn_Click(object sender, EventArgs e)
      7 {
      8 //1.刪除所有表
      9 if (dataGridViewX1.CurrentRow.Index < 0)
      10 {
      11 MessageBox.Show("請選擇需要刪除的數據庫那一行");
      12 return;
      13 }
      14 string strDatabaseName = dataGridViewX1.Rows[dataGridViewX1.CurrentRow.Index].Cells[1].Value.ToString();
      15 SqlHelper sh = new SqlHelper();
      16 string sql = "select table_name from user_tables where table_name like '" +
      17 strDatabaseName.ToUpper() + "/_%' ESCAPE '/'";
      18 OracleDataReader odr = sh.ReturnDataReader(sql);
      19
      20 while (odr.Read())
      21 {
      22 //刪除關聯外鍵
      23 string strTemp = odr[0].ToString().ToUpper();
      24 strTemp = strTemp.Substring(strDatabaseName.Length + 1);
      25 sql = "select table_name,constraint_name from user_constraints where constraint_type='R'"
      26 + " and constraint_name like '" + strTemp + "%'";
      27 OracleDataReader odr1 = sh.ReturnDataReader(sql);
      28
      29 while (odr1.Read())
      30 {
      31 sql = "ALTER TABLE " + odr1[0].ToString().ToUpper() + " DROP CONSTRAINT "
      32 + odr1[1].ToString().ToUpper();
      33 sh.ExecuteSQL(sql);
      34 }
      35 sql = "drop table " + odr[0].ToString().ToUpper();
      36 sh.ExecuteSQL(sql);
      37 }
      38 //2.刪除記錄
      39 Hashtable ht = new Hashtable();
      40 ht.Add("name", strDatabaseName);
      41 try
      42 {
      43 sh.Del("jcsjk_databaseinfo", "name='" + strDatabaseName + "'", ht);
      44 }
      45 catch (Exception)
      46 {
      47 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      48 "刪除元數據庫<" + strDatabaseName + ">失敗!");
      49 MessageBox.Show("刪除元數據庫<" + strDatabaseName + ">失敗!");
      50 }
      51
      52 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      53 "刪除元數據庫<" + strDatabaseName + ">成功!");
      54 MessageBox.Show("刪除元數據庫<" + strDatabaseName + ">成功!");
      55 }
      56
      57

       

      3.清空元數據庫

       1         /// <summary>
      2 /// 清空元數據庫中的數據
      3 /// </summary>
      4 /// <param name="sender"></param>
      5 /// <param name="e"></param>
      6 private void clearMetaDataBtn_Click(object sender, EventArgs e)
      7 {
      8 if (dataGridViewX1.CurrentRow.Index < 0)
      9 {
      10 MessageBox.Show("選擇數據庫!");
      11 return;
      12 }
      13 SqlHelper sh = new SqlHelper();
      14 string strDatabaseName = dataGridViewX1.CurrentRow.Cells[1].Value.ToString();
      15 //NewDataSet nds = new NewDataSet();
      16 string sql = string.Empty;
      17 sql = "select table_name from user_tables where table_name like '" +
      18 strDatabaseName.ToUpper() + "/_%' ESCAPE '/'";
      19 OracleDataReader odr = sh.ReturnDataReader(sql);
      20
      21 while (odr.Read())
      22 {
      23 sql = "delete from " + odr[0].ToString().ToUpper();
      24 try
      25 {
      26 sh.ExecuteSQL(sql);
      27 }
      28 catch (Exception)
      29 {
      30 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      31 "清空元數據庫<" + strDatabaseName + ">的數據失敗!");
      32 MessageBox.Show("清空元數據庫<" + strDatabaseName + ">的數據失敗!");
      33 return;
      34 }
      35 }
      36 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      37 "清空元數據庫<" + strDatabaseName + ">的數據成功!");
      38 MessageBox.Show("清空元數據庫<" + strDatabaseName + ">的數據成功!");
      39 /*
      40 foreach (DataTable dt in nds.Tables)
      41 {
      42 string strTableName = strDatabaseName + "_" + dt.TableName;
      43 sql = "select * from " + strTableName;
      44 DataSet ds = new DataSet();
      45
      46 OracleDataAdapter oda = new OracleDataAdapter(sql,
      47 ConfigurationSettings.AppSettings["ConnectionString"]);
      48 try
      49 {
      50 oda.Fill(ds);
      51 oda.Update(dt);
      52 }
      53 catch (Exception ex)
      54 {
      55 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      56 "清空元數據庫<" + strDatabaseName + ">的數據失敗!");
      57 MessageBox.Show("清空元數據庫<" + strDatabaseName + ">的數據失敗!");
      58 }
      59 }
      60 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      61 "清空元數據庫<" + strDatabaseName + ">的數據成功!");
      62 MessageBox.Show("清空元數據庫<" + strDatabaseName + ">的數據成功!");
      63 * */
      64 }

       

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

      4.創建元數據庫

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

        1         private void createBtn_Click(object sender, EventArgs e)
      2 {
      3 SqlHelper sh = new SqlHelper();
      4 string sql = string.Empty;
      5
      6 if (databaseIDTxt.Text.Trim() == "" || databaseNameTxt.Text.Trim() == "")
      7 {
      8 errTxt.Text = "數據庫ID或名稱不能為空.";
      9 return;
      10 }
      11
      12 //查看元數據庫是否存在
      13 sql = "select * from jcsjk_databaseinfo where name='" + databaseNameTxt.Text + "'";
      14
      15 if (sh.GetRecordCount(sql) > 0)
      16 {
      17 MessageBox.Show("此元數據庫已經存在,請從新命名元數據庫!");
      18 return;
      19 }
      20
      21 Hashtable ht = new Hashtable();
      22 string strContent = string.Empty;
      23 DataSet ds = new DataSet();
      24 //從文件標準創建
      25 if (!checkBoxX1.Checked)
      26 {
      27 if (metaFileTxt.Text == "" || Path.GetExtension(metaFileTxt.Text).ToLower() != ".xsd")
      28 {
      29 errTxt.Text = "請選擇正確的XSD文件.";
      30 return;
      31 }
      32 if (metaIDTxt.Text.Trim() == "")
      33 {
      34 errTxt.Text = "元數據標準ID不能為空.";
      35 return;
      36 }
      37
      38 //1.讀入xsd文件
      39 ds.ReadXmlSchema(metaFileTxt.Text);
      40
      41 //2.create table in tablespace
      42 try
      43 {
      44 OracleDataSchemaAdapter odsa = new OracleDataSchemaAdapter();
      45 odsa.Create(ds, true, databaseNameTxt.Text + "_", "SDE");
      46 }
      47 catch (ArgumentException ae)
      48 {
      49 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      50 "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
      51 MessageBox.Show("-- Error --" + ae.Message + "-- Instructions --");
      52 }
      53 catch (FileNotFoundException)
      54 {
      55 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      56 "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
      57 MessageBox.Show("File not found: " + metaFileTxt.Text);
      58 }
      59 catch (Exception)
      60 {
      61 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      62 "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
      63 MessageBox.Show("創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
      64 }
      65
      66 //寫入元數據標準到數據庫
      67 StreamReader sr = new StreamReader(new FileStream(metaFileTxt.Text, FileMode.Open),
      68 System.Text.Encoding.GetEncoding("GB2312"));
      69
      70 while (!sr.EndOfStream)
      71 {
      72 strContent += sr.ReadLine();
      73 }
      74 sr.Close();
      75 string strName = Path.GetFileNameWithoutExtension(metaFileTxt.Text);
      76 //
      77 sql = "select * from jcsjk_databaseinfo where name='" + strName + "'";
      78 if (sh.GetRecordCount(sql) <= 0)
      79 {
      80 XmlDocument xmlDoc = new XmlDocument();
      81 xmlDoc.Load(metaFileTxt.Text);
      82 XmlNodeList xnl = xmlDoc.GetElementsByTagName("xs:schema");
      83 XmlNode xn = xnl[0];
      84 //插入元數據標準到數據庫中,用參數才能插入,因為content字段內容太大
      85 sql = "insert into jcsjk_metastand (id, name, content, org, version) values("
      86 + ":id,:name,:content,:org,:version)";
      87 OracleParameter[] op = new OracleParameter[5];
      88 op[0] = new OracleParameter();
      89 op[0].ParameterName = "id";
      90 op[0].OracleType = OracleType.NVarChar;
      91 op[0].Value = metaIDTxt.Text;
      92 op[1] = new OracleParameter();
      93 op[1].ParameterName = "name";
      94 op[1].OracleType = OracleType.NVarChar;
      95
      96 string strValue = xn.ChildNodes[0].ChildNodes[1].InnerText;
      97
      98 strValue = strValue.Substring(strValue.IndexOf('') + 1);
      99 op[1].Value = strValue;
      100 op[2] = new OracleParameter();
      101 op[2].ParameterName = "content";
      102 op[2].OracleType = OracleType.Clob;
      103 op[2].Value = strContent;
      104 strValue = xn.ChildNodes[0].ChildNodes[2].InnerText;
      105 strValue = strValue.Substring(strValue.IndexOf('') + 1);
      106 op[3] = new OracleParameter();
      107 op[3].ParameterName = "org";
      108 op[3].OracleType = OracleType.NVarChar;
      109 op[3].Value = strValue;
      110 strValue = xn.ChildNodes[0].ChildNodes[0].InnerText;
      111 strValue = strValue.Substring(strValue.IndexOf('') + 1);
      112 op[4] = new OracleParameter();
      113 op[4].ParameterName = "version";
      114 op[4].OracleType = OracleType.NVarChar;
      115 op[4].Value = strValue;
      116 try
      117 {
      118 sh.ExecuteNonQuery(sql, op);
      119 }
      120 catch (Exception ex)
      121 {
      122 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      123 "寫入元數據標準<" + strName + ">到數據庫失敗!");
      124 MessageBox.Show("寫入元數據標準<<" + strName + ">到數據庫失敗!");
      125 }
      126 }
      127 }
      128 //從數據庫以存儲的標準創建
      129 else
      130 {
      131 string strStandName = comboBoxEx1.SelectedItem.ToString();
      132
      133 sql = "select content from jcsjk_metastand where name='" + strStandName + "'";
      134 OracleDataReader odr = sh.ReturnDataReader(sql);
      135 if (odr.Read())
      136 {
      137 StreamWriter bw = new StreamWriter(new FileStream("temp.xsd", FileMode.Create),
      138 System.Text.Encoding.GetEncoding("GB2312"));
      139
      140 bw.Write(odr[0].ToString());
      141
      142 bw.Close();
      143 ds.ReadXmlSchema("temp.xsd");
      144 System.IO.File.Delete("temp.xsd");
      145 try
      146 {
      147 OracleDataSchemaAdapter odsa = new OracleDataSchemaAdapter();
      148 odsa.Create(ds, true, databaseNameTxt.Text + "_", "SDE");
      149 }
      150 catch (ArgumentException ae)
      151 {
      152 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      153 "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
      154 MessageBox.Show("-- Error --" + ae.Message + "-- Instructions --");
      155 }
      156 catch (FileNotFoundException)
      157 {
      158 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      159 "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
      160 MessageBox.Show("File not found: " + metaFileTxt.Text);
      161 }
      162 catch (Exception)
      163 {
      164 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      165 "創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
      166 MessageBox.Show("創建元數據庫<" + databaseNameTxt.Text + ">失敗!");
      167 }
      168 }
      169
      170 }
      171
      172 //插入元數據庫信息到數據庫
      173 sql = "select * from jcsjk_databaseinfo where name='" + databaseNameTxt.Text + "'";
      174 if (sh.GetRecordCount(sql) <= 0)
      175 {
      176 ht.Clear();
      177 ht.Add("ID", databaseIDTxt.Text);
      178 ht.Add("NAME", databaseNameTxt.Text);
      179 if (descriptionText.Text != "")
      180 {
      181 ht.Add("DESCRIPTION", descriptionText.Text);
      182 }
      183 try
      184 {
      185 sh.Insert("jcsjk_databaseinfo", ht);
      186 }
      187 catch (Exception)
      188 {
      189 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      190 "插入元數據庫<" + databaseNameTxt.Text + ">信息到數據庫失敗!");
      191 MessageBox.Show("插入元數據庫<<" + databaseNameTxt.Text + ">信息到數據庫失敗!");
      192 }
      193 }
      194
      195 LogHelp.writeLog(FrmMain.metaUsername, "元數據庫管理",
      196 "創建元數據庫<" + databaseNameTxt.Text + ">成功!");
      197 MessageBox.Show("創建元數據庫<" + databaseNameTxt.Text + ">成功!");
      198 Close();
      199 }

       

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

      posted @ 2012-02-01 00:08  薔薇理想人生  閱讀(2092)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产欧美日韩另类在线专区| 亚洲男人的天堂网站| 99久久国产福利自产拍| 成人做受120秒试看试看视频| 亚洲男女一区二区三区| 亚洲色欲在线播放一区二区三区| 国产成人精品永久免费视频| 亚洲高清国产拍精品熟女| 久热这里只精品99国产6-99RE视…| 石渠县| 国产色悠悠综合在线观看| 亚洲人成人一区二区三区| 加勒比精品一区二区三区| 制服 丝袜 亚洲 中文 综合| 久久精产国品一二三产品| 国产永久免费高清在线观看| 国产成人av免费观看| 欧美成人精品三级网站| 国产精品午夜福利导航导| 久久久国产精品樱花网站 | 亚洲国产成人精品无码一区二区 | 国语精品一区二区三区| 国产精品中文字幕观看| 蜜桃av亚洲精品一区二区 | 亚洲日韩性欧美中文字幕| 忻城县| 久久精产国品一二三产品| 女同久久一区二区三区| 亚洲欧洲日韩精品在线| 国产AV无码专区亚洲AV漫画 | 尹人香蕉久久99天天拍| 亚洲国产av区一区二| 欧美人人妻人人澡人人尤物| 爱性久久久久久久久| 丝袜美腿视频一区二区三区| 国产高清一区二区不卡| 色综合久久人妻精品日韩| 性欧美videofree高清精品| 国产女人18毛片水真多1| 国产亚洲一在无在线观看| 国产av国片精品一区二区|