當前位置:首頁 » 數據倉庫 » delphixml資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

delphixml資料庫

發布時間: 2022-09-21 18:46:25

Ⅰ delphi如何連接oracle資料庫

Delphi作為強大的資料庫前端開發工具,提供了很多資料庫存取方式的封裝控制項。對於Oracle的數據存取控制項,不管何種資料庫引擎,一般都會封裝一個Connection作為數據集的連接控制項,因此只要設定Connection的相關屬性即可,其它dataset控制項,如query,table等只要指定此Connection即可,客戶端應用程序要連接到Oracle的Schema,一般都需要安裝Oracle Client,並使用Net Manager設置客戶端可以訪問的Oracle Database Server的主機名稱及存取協議、Port等信息。可以使用以下的方式連接

  1. dbExpress:dbExpress比較適合連接sql的資料庫,據說效率挺高的。放置一個dbExpress頁簽下的SQLConnection,在此控制項上點擊滑鼠右鍵,選擇「Edit Connection Properities」功能,並依下圖設置即可。其中Database欄位要設置為Oracle Client中設置的服務名,如果需要記住密碼,而不用每次連接的時候輸入密碼,請將 LoginPrompt屬性設置為False,設置OK後即可測試將Connected:=True看看是否成功,其它數據處理控制項請選擇相應dbExpress頁簽下的控制項即可。


  2. 不使用控制項,比如使用原生的ADO組件,不太建議這種方法,既然Delphi已經做了封裝,何必又要回到原始狀態呢。以上連接方法都需要安裝Oracle Client軟體,但是Oracle官方的Client太過龐大,安裝非常不便,目前網上有人發布一個精簡版的Oracle Client軟體,比較小,可以滿足連接Oracle的需要,可以去下載這個軟體,而不用去安裝復雜的官方版本。

  3. 下載ODAC控制項,此控制項不需要安裝Oracle Client,而是使用OCI的方式透過TCP/IP協議直接連接到Oracle Server,可以將程序做成瘦客戶端,程序分發的時候比較方便。此控制項支持Delphi的大部分版本以及C++Builder以及kylix以及.net,而且提供源代碼,有興趣的可以研究一下。具體安裝使用方法請參考控制項的相關說明以及幫助文檔。

Ⅱ Delphi如何生成xml文件

「ADOQuery.SaveFile()就可以了
保存的文件名後綴為.xml,程序會自動判斷」

真的改了後綴名就可以存成Xml文件了嗎?在下真沒用過,受教了。

你可以根據資料庫中的表定義好數據格式,然後利用IXmlDocument介面創建數據,最後再保存成文件就OK了

procere CreateXML();
var
ixd: IXmlDocument;
root: IXmlNode;
node: IXmlNode;
begin
ixd := NewXmlDocument();
try
ixd.Encoding := 'UTF-8';

root := ixd.AddChild('Datas');
node := root.AddChild('Data');
node.Attributes['id'] := 1;
node.Attributes['level'] := '1';
node.Text := 'HAHA';

ixd.SaveToFile('Abc.xml');
finally
ixd := nil;
end;
end;

Ⅲ delphi中如何將XML保存到資料庫中 讀出 並且可以保存的數據讀出保存到XML中

[delphi中如何將XML保存到資料庫中?]這要看你要保存到資料庫的XML規範文件,而規範文件又分簡單和復雜的,可以根據資料庫管理員提供的標准XML,做XML文本文件。XML的每一行中每一個節點哪些可以更改,哪些不能更改。。。如Dim sRoot As MSXML2.IXMLDOMElement ,sRoot.setAttribute "COMPATIBLE_REV", "" 你要需要看XML的編寫方法的書籍,電腦裝個介面引擎,再調傳網數據。。。。。。 我自己以前剛做這些也用了好幾天才搞定。 例子我用VB寫的,只說明如何定義IXMLDOMElement,怎樣做節點。

Ⅳ Delphi中點擊button要將DBEdit中的新紀錄寫入資料庫代碼是什麼

uses中加入DB;

if (DBEdit1.DataSource.DataSet.State = dsinsert) or (DBEdit1.DataSource.DataSet.State = dsEdit) then
DBEdit1.DataSource.DataSet.Post ;

DBEdit1.DataSource.DataSet可以換成DBEdit1所關聯的ADOQuery或者ADOTable

如:
if (ADOQuery1.State = dsInsert) or (ADOQuery1.State = dsEdit) then
ADOQuery1.Post ;

state = dsInsert說明數據集為插入新數據待保存狀態
state = dsEdit說明數據集為編輯數據待保存狀態

Post函數為向資料庫提交修改或者新增加的數據。

Ⅳ 哪位大蝦知道" .xrp " 文件, 哪種軟體可以打開

Delphi 6 含有許多更新更強的XML支持功能,增加了XML文件編程,XML數據綁定向導,XML映象和BizSnap(SOAP/XML Web服務)。本文是三篇論述Delphi 6中XML功能系列文章的第三篇,也是最後一篇,論述Delphi 6中的XML映象工具,也稱之為XML映象器(XML Mapper)。

XML映象器
可以單獨打開或者在IDE的工具(Tools)菜單中打開映象器(XML Mapper)。這個工具將XML文件影射為類似於資料庫中的數據集(DataSet)!在前二篇文章中,我們都使用TXMLDocument組件來處理 XML文件或XML綁定的數據。現在,我們不再使用TXMLDocument組件了。我們用XML映象器將XML文件轉換成數據包(或反之),這樣就可以象我們非常熟悉得那樣使用諸如DataSet這樣的組件來處理XML數據。
XML映象器可以打開XML文件和數據包文件(*.xml,*.cds),綱文件(*.dtd,*.xdr,*.xsd),
庫文件 (*.xrp)
和轉換文件(*.xtr)。後面這個轉換文件是由映象器自行產生的。現在載入我們在前二篇文章中用到的Clinic.xml文件,看看數據影射成什麼樣。

如圖1所示,Clinic.xml影射為一個Clinics結構,含有若干Clinic子項。每個Clinic有4個域:@No, Title, Date, 和Topics。注意@No是屬性,其他3個是元素。
將滑鼠移至Clinic節點,按右鍵,選擇"Select All"(Ctrl+A)或者"Select All Children",這樣就把@No, Title, Date and Topics各項加到中間的映象表內。此時還沒有生成相應的數據集域。
我們再次到Clinic節點按下滑鼠右鍵,選擇"Create Datapacket from XML"(Ctrl+D),這時產生了相應的數據包並顯示在映象器的右方,如圖2所示。
映象器將XML文件轉換成4個標准格式的數據包。我們還可以增加或刪除數據包。這在B2B場合尤為重要,將接收到的數據(紀錄)插入到資料庫中。

創建並測試轉換
按下Create and Test Transformation按鈕,隨即彈出一個DBGrid窗口,以ClientDataSet數據包格式顯示Clinic.xml文件里的數據。數據轉換之後,有4種方式存檔。對於初學者來說,可以存回原先的Clinic.xml文件。另外還可以存為包數據文件格式(*.xml),庫文件 (repository)格式(.xrp)和轉換文件格式(*.xtr)。後面的庫文件可以被XMLTransform組件(在Data Access標簽里)調用。

XML轉換
Delphi 6里有3個XML轉換組件。TXMLTransformProvider組件通過clinic.xtr文件將原始XML文件轉換到ClientDataSet。
舉例來說,在Delphi 6的主窗體上安放一個TXMLTransformProvider(在Data Access標簽里)。將TransformRead屬性的TransformationFile子屬性設為clinic.xtr作為數據源。將 XMLDataFile設為clinic.xml文件。
然後安放一個ClientDataSet組件,將它的ProviderName屬性設為XMLTransformProvider。
現在可以激活ClientDataSet組件了,它將由XMLTransformProvider提供的數據轉換過來。它的PacketRecords屬性值預設為-1,表示轉換全部XML文件。
要顯示數據,我們再加入DataSource和DBGrid組件。將DataSource指向ClientDataSet,DBGrid指向DataSource,就象我們通常使用得那樣。結果顯示如圖3。

現在可以象使用資料庫數據那樣使用XML文件里的數據了。如果對數據進行了修改,可以調用ClientDataSet.ApplyUpdates方法將改動的數據存回XML文件。
但是這樣做是不夠的。我們還得啟動XML映象器,將創建方式由"XML to Datapacket"改為"Datapacket to XML"。這時如果按下"Create and Test Transformation"鍵,看到的是空白頁。然後將轉換結果存為ClinicToXml.xtr文件。
現在,將TXMLTransformationProvider的TransformationWrite屬性中的子屬性TransformationFile設為ClinicToXml.xtr文件。
最後在主窗體的OnClose事件中加上存檔指令:
ClientDataSet1.ApplyUpdates(-1)
程序退出之前會將作出的數據修改存回XML文件。
這樣就為Delphi 6的B2B開發環境BizSnap的虛擬中間層作好了數據准備。

Ⅵ C#中基於XML的Excel中的數據導入Oracle資料庫,通過調用封裝好的Delphi來解析Xml的思路和代碼

string strSqlTmp = "";
if (dlr == DialogResult.Yes)
{
string filePath = "";
OpenFileDialog openFiledialog1 = new OpenFileDialog();
openFiledialog1.Filter = "Excel文件(*.xls)|*.xls";
DialogResult result = openFiledialog1.ShowDialog();
if (DialogResult.OK == result)
{
filePath = openFiledialog1.FileName;

string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";
string sql_excel = "select * from [Sheet1$]";
try
{
OleDbConnection thisconnection = new OleDbConnection(conn);
thisconnection.Open();
OleDbDataAdapter mycommand = new OleDbDataAdapter(sql_excel, thisconnection);

mycommand.Fill(dst, "[Sheet1$]");
}
catch (Exception)
{

MessageBox.Show("打開Excel文件失敗,文件格式不正確,可能由於Excel表中表名不是[Sheet1]引起的!", "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}

//universalDAL.ConnectionString = DBInfos.ConnectionString.ToString();
int insertNumb = 0; //記錄插入條數
int updateNumb = 0; //記錄更新條數
int compareEqualIndex = -1; //判斷是更新還是插入操作
if (dst.Tables[0].Columns.Count == ds.Tables[0].Columns.Count)
{
for (int i = 0; i < dst.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
{
if (string.Compare(dst.Tables[0].Rows[i][0].ToString(), ds.Tables[0].Rows[j][0].ToString()) == 0)
{
compareEqualIndex = i;
}
}
if (compareEqualIndex != -1)
{
strSqlTmp = "UPDATE PAY SET name = '" + dst.Tables[0].Rows[i][1].ToString() + "', " +
"sex = '" + dst.Tables[0].Rows[i][2].ToString() + "', " +
"daynum = '" + dst.Tables[0].Rows[i][3].ToString() + "' " +
"wages = '" + dst.Tables[0].Rows[i][4].ToString() + "' " +
"subsidy = '" + dst.Tables[0].Rows[i][5].ToString() + "' " +
"comm = '" + dst.Tables[0].Rows[i][6].ToString() + "' " +
"JBF = '" + dst.Tables[0].Rows[i][7].ToString() + "' " +
"OTHER1 = '" + dst.Tables[0].Rows[i][8].ToString() + "' " +
"DELIVER = '" + dst.Tables[0].Rows[i][9].ToString() + "' " +
"CHECK_ON = '" + dst.Tables[0].Rows[i][10].ToString() + "' " +
"MALINS = '" + dst.Tables[0].Rows[i][11].ToString() + "' " +
"OLDAGE = '" + dst.Tables[0].Rows[i][12].ToString() + "' " +
"OTHER2 = '" + dst.Tables[0].Rows[i][13].ToString() + "' " +
"DETAIN = '" + dst.Tables[0].Rows[i][14].ToString() + "' " +
"SAL = '" + dst.Tables[0].Rows[i][15].ToString() + "' " +
"AREA = '" + dst.Tables[0].Rows[i][16].ToString() + "' " +
"BRANCH = '" + dst.Tables[0].Rows[i][17].ToString() + "' " +
"JOB = '" + dst.Tables[0].Rows[i][18].ToString() + "' " +
"WHERE NUM = '" + dst.Tables[0].Rows[i][0].ToString() + "'";
//universalDAL.ExecuteNonQuery(strSqlTmp);

updateNumb++;
compareEqualIndex = -1;
}
else
{
strSqlTmp = "INSERT INTO PAY(num,name,sex,daynum,wages,subsidy,comm,JBF,OTHER1,DELIVER,CHECK_ON,MALINS,OLDAGE,OTHER2,DETAIN,SAL,AREA,BRANCH,JOB)" +
"VALUES('" + dst.Tables[0].Rows[i][0].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][1].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][2].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][3].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][4].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][5].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][6].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][7].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][8].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][9].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][10].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][11].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][12].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][13].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][14].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][15].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][16].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][17].ToString() + "'," +
"'" + dst.Tables[0].Rows[i][18].ToString() + "')";
int intinset=DbHelperOra.ExecuteSql(strSqlTmp);
insertNumb++;
}
}
MessageBox.Show("成功更新" + updateNumb + "條記錄,插入" + insertNumb + "條記錄!", "提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
DataShow(" 1=1");
}
else
{
MessageBox.Show("Excel文件列的格式不符合數據字典信息列的格式", "提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
}

}

Ⅶ Delphi ClientDataSet 資料庫 字元型欄位 TWideStringField TStringField 如何共存

簡單用法:
資料庫-->ADOconnetion-->ADOquery-->DataSetProvider-->ClientDataSet

DataSetProvider1.dataset := ADOquery1;
ClientDataSet1.ProviderName:='DataSetProvider1';