以前寫.Net都用SQL Server2005數據庫,但公司裡要用Oracle 9i數據庫,只能改程序的接口了,我從網上查了很多文章,很多都只說了一個方面,試驗起來都不成功,測試了好多次終於成功了,所以做個簡單得Demo把解決方法告訴遇到此類問題的朋友們。
Demo界面: Default.ASPx
界面上添加的控件:
兩個TextBox: tEmail(用於輸入用戶email),tPassWord(用於輸入注冊密碼)
一個Button: bReg
一個Label: lLable(用於注冊成功後顯示應答)
Demo的代碼: Default.ASPx.cs
我們先把數據的連接字符串寫在Web.config裡:
<aPPSettings>
<add key="Oracleconn" value="User ID=用戶名;PassWord=密碼;Data Source=數據庫服務名;"/>
</aPPSettings>
下面是Demo的源代碼:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OracleClIEnt; //添加OracleClIEnt的引用
public partial class _Default : System.Web.UI.Page
{
public System.Data.OracleClIEnt.OracleConnection objConn; //聲明一個OracleConnection對象
public System.Data.OracleClIEnt.OracleCommand objCmd; //聲明一個OracleCommand對象
protected void Page_Load(object sender, EventArgs e)
{
lLable.Text = "";
string strcon = System.Configuration.ConfigurationManager.APPSettings["Oracleconn"];
//從Web.config 文件裡調用數據庫連接字符串
objConn = new OracleConnection(strcon);
}
protected void bReg_Click(object sender, EventArgs e)
{
string strSQL = "INSERT INTO TEMP(EMAIL,PASSWord) values (''";
strSQL+=tEmail.Text.Replace("''","''''").ToString()+"'',''";
strSQL+=tPassWord.Text.Replace("''","''''").ToString()+"'')";
objCmd = new OracleCommand(strSQL, objConn);
objConn.Open();
objCmd.ExecuteNonQuery();
objConn.Close();
lLable.Text = "注冊成功,您的郵件地址是:"+tEmail.Text.ToString();
}
}
注意:
其實直接寫上面的代碼會出不少錯誤的,要做兩個工作才可以。
1. ASP.NET2.0裡默認不能直接添加using System.Data.OracleClIEnt;需要在填加引用的.Net組件框裡選擇System.Data.OracleClIEnt添加後才能用。
2. 在ASP.NET1.1中調用Web.config中的數據庫連接字符串時使用語句System.Configuration.ConfigurationSettings.AppSettings["oracle"];,在2.0裡須要使用System.Configuration.ConfigurationManager.APPSettings["Oracleconn"];,並且需先在填加引用的.Net組件框裡選擇System.Configuration添加後才能用。
好了,工作做完了,一切OK。