informix資料庫連接
1. 求助,informix客戶端連接資料庫,報密碼錯誤
1,在ASPX頁面上拖兩個TextBox,一個用於輸入用戶名,一個用於輸入密碼。還有一個Button,給這個Button的Click事件添加判斷用戶名,密碼是否正確的功能,具體見2
2,從頁面獲取到用戶名和密碼,在資料庫的表中,查找用戶名為你輸入用戶名的記錄,如果沒有查到,提示枯嫌「用戶名不存在」。如果查找到記錄,取出記錄對應的用戶名和密碼信息,比較查尋出來的密碼和輸入的密碼是否一致,不一致,提示「密碼錯誤」。如果密碼也正確,你可以顯示登錄成沒吵手功,或者是跳轉到其他一些有用的頁面。碰讓
2. 如何遠程連接informix資料庫 怎樣配置
Class.forName("com.informix.jdbc.IfxDriver");
conn = DriverManager.getConnection("jdbc:informix-sqli://IP:port/database:informixserver=server", "user", "password");
IP:你要連接資料庫的IP地址
port:你要連接資料庫的埠號
database:你要連接數據衡配庫的庫名
server:你要連接資料庫的server
user:你要連接資料庫的用戶名
password:你要連接咐叢指資料庫的鄭巧密碼
stmt = conn.createStatement();
rs = stmt.executeQuery("select a from b"); //你要執行的sql語句
while(rs.next()){
System.out.println(rs.getString("a")); //輸出結果
}
連接之前需要導入ifxjdbc.jar這個包,異常就用eclipse自動拋吧
3. python調用dbaccess連接informix資料庫
使用informixdb庫,如下是快速穗寬示例:
>>> import informixdb
>>> conn = informixdb.connect('弊液mydatabase')
>>> cursor = conn.cursor()
>>> cursor.execute("SELECT * FROM names")
>>> cursor.fetchall()
[('donald', 'ck'租族物, 34), ('mickey', 'mouse', 23)]
4. .net vs怎麼連接Informix資料庫
在使用 ADO.NET 驅動程序之前,應該確保該驅動程序已安裝並能正確運行。該驅動程序的當前版本可以使用 Informix Client Software Developer's Kit (SDK) 2.90 來安裝。與以前的 2.81 版本不同,此 SDK 版本包括默認的 ADO.NET 驅動程序。SDK 的安裝程序也會警告您有關事項。它並不真正在您的計算機上查找 .NET 框架的安裝,只是警告您必須在安裝 SDK 之前安裝好 .NET 框架。如果您已經安裝了 2.81 SDK,那麼最好先卸載它。這兩個版本無法共存。還要認識到的一點是,在將 2.90 ADO.NET 驅動程序添加到 Visual Studio Projects 中時,它會不正確地報告它自己是版本 2.81。
2.9 版本是在 2.81 版本之上的一次重要升級。它包括一個新歲洞的 IfxDataAdapter 向導、IPv6 支持和一些用於 Informix 數據類型(IfxDateTime、IfxDecimal、IfxBlob 和 IfxClob)的新類。該文檔更為完善,內容總量是以前的兩倍。
要點:IBM Informix ADO.NET 驅動程序並不僅僅包含在安裝目錄下的 /bin 目錄下的 IBM.Data.Informix.dll 文件中。顯然,它使用了由 SDK 安裝的其他客戶端代碼。這意味著您必須在所有將使用 ADO.NET 驅動程序的機器上安裝 Informix Client SDK。您不能只在您的發行版中包括 IBM.Data.Informix.dll。這對一些應用程序而言可能是一個嚴重的限制。您還需要仔細檢查 SDK 安裝程序 (SetNet32),以定義 Informix 數據源。
在將 ADO.NET 驅動程序用於連接之前,還必須運行一個叫做 cdotnet.sql 的存儲稿蠢過程。這個存儲過程位於 SDK 安裝的 /etc 目錄中。這類似於設置 OLEDB 驅動程序的過程,盡管這個過程更短一些。這個過程記錄在 User's Guide 中。(請參閱下面的參考資料部分。)
在完成安裝之後,檢查一下驅動程序,確保建立了連接。要在 Visual Studio 項目中使用 ADO.NET 驅動程序,則必須確保已將一個引用添加到客戶端 SDK 安裝的 /bin 目錄中找到的 IBM.Data.Informix.dll 中。正確的using語句是:using IBM.Data.Informix。以下是一個演示如何獲得到資料庫的連接的簡單方法:
清單1.到Informix資料庫的連接
publicvoidMakeConnection(){stringConnectionString="Host="+HOST+";"+"Service="+SERVICENUM+";"+"Server="+SERVER+";"+"Database="+DATABASE+";"+"Userid="+USER+";"+"Password="+PASSWORD+";";//,DB_LOCALEetc//FulllistinClientSDK's.NetProviderReferenceGuidep3:13IfxConnectionconn=newIfxConnection();conn.ConnectionString=ConnectionString;try{conn.Open();Console.WriteLine("Madeconnection!");Console.ReadLine();}catch(IfxExceptionex){Console.WriteLine("Problemwithconnectionattempt:"+ex.Message);}}
示例代碼中包括一個用於此功能的BasicConnection類。如您所見,ConnectionString只是一個用於連接的分號分隔的參數列表。Open()方法打開了到資料庫的連接,如果連接失敗,則拋出一個IfxException。IfxException.Message屬性通常提供關於失敗原因的合理數量的詳細信息
基本命令
一旦建立了連接,就可以開始對資料庫執行命令。要做到這一點鍵雀陪,需要使用IfxCommand對象。IfxCommand的構造函數接收一個字元串(SQL 命令文本)和一個IfxConnection作為參數。IfxCommand對象有一系列的Execute方法,以便對資料庫執行命令。要清除連接,可以使用IfxConnection.Close()方法。以下是執行某個不返回結果集的簡單命令的例子。該命令可能是 insert、update 或 delete。
清單2.執行insert、update或delete命令
IfxCommandcmd;cmd=newIfxCommand("insertintotestvalues(1,2,'ABC')",conn);cmd.CommandTimeout=200;//{introws=cmd.ExecuteNonQuery();}catch(IfxExceptionex){Console.WriteLine("Error"+ex.Message);}
ExecuteNonQuery以整數形式返回受命令影響的行數。您還可以構建參數化語句和查詢,後面部分將對它們進行研究。注意IfxCommand的CommandTimeout屬性。默認超時時間是 30 秒,盡管在文檔中沒有對此進行說明。除非更改此屬性,否則運行 30 秒後,命令就會超時,並且將拋出一個異常。
下一個例子是執行一條 select 語句,並處理由資料庫伺服器返回的結果集。對於快速的、只向前通過結果的游標,可以使用由ExecuteReader方法返回的IfxDataReader。不過,每個IfxConnection只可以有一個打開的IfxDataReader。(這是一條 ADO.NET 限制,不是 Informix ADO.NET 驅動程序的特定限制。)
清單3.迭代通過IfxDataReader
IfxCommandcmd=newIfxCommand("select*fromtest",bconn.conn);try{IfxDataReaderdr=cmd.ExecuteReader();while(dr.Read()){inta=dr.GetInt32(0);intb=Convert.ToInt32(dr["b"]);stringc=(String)dr[2];}dr.Close();}catch(IfxExceptionex){Console.WriteLine("Error"+ex.Message);}
每一列都被作為一般的 Object 類型進行檢索。正如代碼所演示的,存在一些將列 Objects 轉換為正確數據類型的方法。您可以使用IfxDataReader的GetXxx方法。對於每種數據類型,幾乎都有相應的方法。GetXxx方法將列數目作為一個參數。可以使用IfxDataReader的索引,通過列的名稱來訪問列。如果可能的話,.NET 框架的Convert函數可以將這些 Objects 轉換為正確的類型。最後,可以根據列編號為這些列建立索引,並直接強制轉換結果(對於某些類型)。
下一個例子將展示如何調用需要一個參數值的存儲過程。
清單4.執行帶有一個參數的存儲過程
IfxCommandcmd=newIfxCommand("test_proc",conn);cmd.CommandType=CommandType.StoredProcere;//fromSystem.Datacmd.Parameters.Add("in_parameter",2);//manywaystocreatethesetry{cmd.ExecuteScalar();}catch(IfxExceptionifxe){Console.WriteLine("Error"+ifxe.Message);}
對於此IfxCommand,必須將CommandType設置為來自System.Data中的CommandType枚舉的StoredProcere值。為了創建參數,可以使用IfxCommand的Parameters.Add方法。IfxCommands.Parameters是一個集合,因此您可以添加您所需數量的參數。您可以使用任意IfxParameter()構造函數來創建參數,或者可以像上面這樣簡化參數的創建。不過要注意的是,每個IfxParameter都與一個特定的IfxCommand相關。您不能先創建IfxParameters,然後在多個IfxCommand對象中使用它們。ExecuteScalar()方法現在只返回 1。這一示例沒有從存儲過程返回任何東西。
要構建一個不執行存儲過程的參數化 SQL 語句,需要將問號作為佔位符插入CommandText中。例如:
清單5.參數化查詢
IfxCommandinsCmd=newIfxCommand("insertintoclientstest"+"(clientcode,clientacctname,primarycontact,primaddrcode,"+"initialamt,createdate)values(0,?,?,?,?,TODAY)",conn);
按照IfxParameter對象在命令文本中的順序,將這些對象添加到IfxCommand的Parameters集合中。在下面的擴展示例中的最終強類型化DataSets中,將進一步演示此技術。
強類型數據集
ADO.NET 包括一個叫做DataSet的專用資料庫對象。它是一個內存資料庫。DataSet由一個或多個(由一些DataRow對象的)DataTable對象組成。DataTable可以通過主鍵和外鍵相關聯。可以對數據設置一些約束。DataSet也與實際的數據存儲斷開連接,可以通過一個或多個DataAdapter(每個DataTable一個)來填充它,然後在內存中保存這些數據和所有更改。稍後,DataAdapter可以將這些更改提交回數據存儲。
基本的DataSet不是強類型的。它不知道資料庫的實際行和列是什麼。因此編譯器沒有檢查這些列名稱。直到運行的時候,列名稱中的任何錯誤才會顯現出來。此外,當開發者記不清列名是 "itemcode" 還是 "itemid" 的時候,他會發現基本的 DataSet 在這方面毫無幫助。
一個強類型的DataSet可以解決這些問題。而一個普通的DataRow卻無法取代它,因為普通的DataRow只有一個(例如)作為OrderDetailDataTable一部分的OrderDetailDataRow。您可以將這些列作為OrderDetailDataRow的實際屬性 (row.ItemCode) 進行引用。用這種方式,可以提高 IntelliSense 的生產率。表名稱和列名稱在屬性編輯器中也會變得有效,從而增強諸如數據綁定之類的設計人員級工具。
那麼,怎樣構建這個提高生產率的強類型DataSet呢?要花費如此多的時間或精力來構建一個您還沒有體驗到任何凈生產效率的東西嗎?Informix ADO.NET 驅動程序可能沒有其他一些驅動程序那麼復雜。Microsoft 的SQLDataAdapter(用於 SQL Server)包括一個 Generate DataSet 向導。而IfxDataAdapter沒有這樣的向導。不過,您可以構建一些工具來幫助您,也可以使用一些已在 .NET 框架中構建的工具。最後,您將擁有封裝所有資料庫交互的強類型DataSet的一個子代。
.NET 框架包括一個 XSD 編譯器 (xsd.exe),它可以從某個經過特殊格式化的 .xsd 文件中生成一個強類型DataSet。但是,誰想鍵入一串 XML 呢?幸運的是,DataSet對象包括一個叫做WriteXmlSchema()的方法。此方法允許您使用非類型化的DataSet為強類型DataSet創建 XSD 文件。讓我們來看一下如何做到這一點。以下是一個示例表:
清單6.Clientstest表
CREATETABLEclientstest(clientcodeSERIALnotnull,clientacctnameCHAR(60)notnull,primarycontactCHAR(30)notnull,primaddrcodeCHAR(10),createdateDATE,initialamtDECIMAL(18,0));
以下是用於此表的單表DataSet:
清單7.定義DataSet
DS=newDataSet("dsClients");//=newDataTable("clients");DataColumnCollectioncols=mainTable.Columns;DataColumncolumn=cols.Add("clientcode",typeof(Int32));column.AllowDBNull=false;cols.Add("clientacctname",typeof(String)).MaxLength=60;cols.Add("primarycontact",typeof(String)).MaxLength=30;cols.Add("primaddrcode",typeof(String)).MaxLength=10;cols.Add("initialamt",typeof(Decimal));cols.Add("createdate",typeof(System.DateTime));//primarykeymainTable.PrimaryKey=newDataColumn[]{cols["clientcode"]};//addtabletoDataSetDS.Tables.Add(mainTable);//WriteschematofileDS.WriteXmlSchema("dsClients.xsd");
在這個定義中,可以在數據上設置類型和限制條件。還可以設置列名稱。這些名稱不必與資料庫的列名稱匹配。觀察本文下載部分中的代碼文件,以查看得到的 dsClients.xsd 文件。
為了使生成 XSD 文件(或者在發生更改後重新生成它)變得更容易,可以為這些DataSetBuilders 構建一個框架。(完成此任務所需的所有代碼都包含在下面部分。)在想用該框架確定要構建哪些 Builders 時,可以使用反射來動態確定某一 Builders 是否是DataSetBuilder。讓我們從編寫IBuildable介面開始。它定義了DataSetBuilder必須實現的屬性和方法。
清單8.IBuildable介面
publicinterfaceIBuildable{stringFileName{get;set;}stringFilePath{get;set;}LoggerLog{get;set;}DataSetDS{get;set;}voidBuildXSD();voidCompileXSD(stringoutputDirectory);}