請教﹕WebForm中如何連Oracle8i? 你没安装Oracle 客户端吧? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先安装客户端,记住,版本尽量要和服务端一样,然后建立连接串,然后在.nET平台上连接,拖拽,就可以了 1.安装Oracle 客户端;2.连接串:string sConnectionString="Provider=MSDAORA;Pass word=你访问数据库的密码;User ID=你访问数据库的用户名;Data Source=数据库服务名";如下:Provider="MSDAORA.1";User ID=smarthr;Data Source=rsgl;Password=smarthr你可以拖进OleDataAdapter,通过向导来完成。 積壓位大哥WEB發布的主機上裝了Oracle,別名也建了﹐且﹕我用C#寫的小系統(也是連Oracle的)都能正常運行。 各位大哥指教﹕SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 1月 6 10:11:51 2004Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.輸入使用者名稱: mycost/mycost@ora54連線到:Oracle8i Enterprise Edition Release 8.1.6.0.0 - ProductionWith the Partitioning optionJServer Release 8.1.6.0.0 - ProductionSQL>說明可以正常連接到Oracle了。 Weboracle.aspx文件: <%@ Page Language="C#"%> <%@ Import Namespace="System.Data"%> <%@ Import Namespace="System.Data.OleDb"%> <%@ Import Namespace="System.Resources" %> <%@ Import Namespace="System.Data.SqlClient" %> <html> <script language="C#" runat="server"> string sql=""; string ConnStr ="Provider=MSDAORA.1;Password=mycost;User ID=mycost;Data Source=ora54"; void Page_Load(Object sender, EventArgs e) { //判斷是否隱藏PagerStyle-Mode if (chk1.Checked) { Grid1.PagerStyle.Visible=true; } else { Grid1.PagerStyle.Visible=false; } BindGrid(); } void BindGrid() { //String Provider,DataBase,ConnStr,sql; //第二步:執行SQL指令,選出記錄集合 OleDbDataAdapter Cmd; OleDbConnection Cnn; sql ="select * from m_acct"; Cnn=new OleDbConnection(ConnStr); Cmd=new OleDbDataAdapter(sql,Cnn); DataSet ds=new DataSet(); Cmd.Fill(ds,"m_acct"); //第三步:將資料集合同DataGrid結合在一起 Grid1.DataSource=ds.Tables["m_acct"].DefaultView; Grid1.DataBind(); ShowStats(); } void PagerButtonClick(Object sender, EventArgs e) { //獲得LinkButton的參數值 String arg = ((LinkButton)sender).CommandArgument; switch(arg) { case ("next"): if (Grid1.CurrentPageIndex < (Grid1.PageCount - 1)) Grid1.CurrentPageIndex ++; break; case ("prev"): if (Grid1.CurrentPageIndex > 0) Grid1.CurrentPageIndex --; break; case ("last"): Grid1.CurrentPageIndex = (Grid1.PageCount - 1); break; default: //本頁值 Grid1.CurrentPageIndex = int.Parse(arg); break; } BindGrid(); } public void Grid1_Edit(Object sender, DataGridCommandEventArgs e) { Grid1.EditItemIndex = e.Item.ItemIndex; } public void Grid1_Cancel(Object sender, DataGridCommandEventArgs e) { Grid1.EditItemIndex = -1; } public void Grid1_Update(Object sender, DataGridCommandEventArgs e) { } public void Grid1_Delete(Object sender, DataGridCommandEventArgs e) { OleDbConnection connDel = new OleDbConnection(ConnStr); connDel.Open(); String sql_Del = "DELETE FROM m_acct " + " WHERE acct_no = " + e.Item.Cells[0].Text; OleDbCommand OleDbCommandDel = new OleDbCommand(sql_Del,connDel); OleDbCommandDel.ExecuteNonQuery(); connDel.Close(); } void Grid1_Page(Object sender, DataGridPageChangedEventArgs e) { //處理按下數位的方法 BindGrid(); } void ShowStats() { //顯示頁面資訊 lblCurrentIndex.Text = "當前頁數: " + ((int)Grid1.CurrentPageIndex+1); lblPageCount.Text = "總頁數是: " + Grid1.PageCount; } </script> <body> <div align="center"> <h3><font face="Verdana">個性化的分頁實例</font></h3> <form runat=server> <ASP:DataGrid id="Grid1" runat="server" AllowPaging="TRUE" PageSize="10" PagerStyle-Mode="NumericPages" PagerStyle-HorizontalAlign="Right" OnPageIndexChanged="Grid1_Page" BorderColor="black" BorderWidth="1" GridLines="Both" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" AlternatingItemStyle-BackColor="#eeeeee" AutoGenerateColumns="false" OnEditCommand="Grid1_Edit" OnCancelCommand="Grid1_Cancel" OnUpdateCommand="Grid1_Update" OnDelteCommand="Grid1_Delete"> <Columns> <asp:BoundColumn DataField="ACCT_NO" SortExpression="ACCT_NO" ReadOnly="True" HeaderText="會計科目代碼"></asp:BoundColumn> <asp:BoundColumn DataField="ACCT_NM" SortExpression="CLASS_NO" HeaderText="科目階層"></asp:BoundColumn> <asp:BoundColumn DataField="ACCT_CLASS" SortExpression="ACCT_NAME" HeaderText="會計科目名稱"></asp:BoundColumn> <asp:EditCommandColumn ButtonType="LinkButton" CancelText="Cancel" HeaderText="編輯" EditText="Edit" UpdateText="Update" /> <asp:ButtonColumn Text= "Delete" CommandName="Delete" HeaderText="刪除"></asp:ButtonColumn> </Columns> </ASP:DataGrid> <p> <font face="Verdana" size="-2"> <asp:Label id="lblCurrentIndex" runat="server"/> <asp:Label id="lblPageCount" runat="server"/> </font> <asp:LinkButton id="btnFirst" runat="server" Text="首頁" CommandArgument="0" ForeColor="navy" Font-Name="verdana" Font-size="8pt" OnClick="PagerButtonClick"/> <asp:LinkButton id="btnPrev" runat="server" Text="前頁" CommandArgument="prev" ForeColor="navy" Font-Name="verdana" Font-size="8pt" OnClick="PagerButtonClick"/> <asp:LinkButton id="btnNext" runat="server" Text="後頁" CommandArgument="next" ForeColor="navy" Font-Name="verdana" Font-size="8pt" OnClick="PagerButtonClick"/> <asp:LinkButton id="btnLast" runat="server" Text="末頁" CommandArgument="last" ForeColor="navy" Font-Name="verdana" Font-size="8pt" OnClick="PagerButtonClick"/> <asp:Checkbox id="chk1" runat="server" Text="顯示內置的頁數" Font-Name="Verdana" Font-Size="8pt" AutoPostBack="true"/> </form> </div> </body> </html> 这样连接:OleDbConnection conn;String str_conn="Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=****;Password=****;Data Source=ORCL"; conn=new OleDbConnection(str_conn);conn.Open(); 把连结字串写在页面里是个不好的习惯,你应该把获取连接字串写在一个Dll中,这个DLL中有一条函数就是从末个地方读取一个文件(一般用Xml文件),返回连接string,给你看一个我的连接文件<configure> <Server ID="0" TYPE="default" DEBUG="0"> <ServerName>*****</ServerName> <DBName>*****</DBName> <LoginID>*****</LoginID> <Password>*****</Password> <Provider>2</Provider> <log>0</log> </Server> <Server ID="1" TYPE="server1" DEBUG="0"> <ServerName>*****</ServerName> <DBName>*****</DBName> <LoginID>*****</LoginID> <Password>*****</Password> <Provider>2</Provider> <log>0</log> </Server> <ERP>Provider=MSDAORA;Password=apps;User ID=apps;Data Source=prd2;</ERP> <metadata_path>C:\web\metadata\</metadata_path> <materials_path>D:\Materials\</materials_path> <classroom_path>C:\web\classroom1\courses\</classroom_path> <progress_path>C:\web\progress\</progress_path> <supply_path>C:\web\supply\</supply_path> <reference_path>C:\web\supply\</reference_path> <quiz_path>c:\web\quizfile\</quiz_path> <temp_path>c:\web\temp\</temp_path> <copy_file>1</copy_file> <SMTPServer>seed.net.tw</SMTPServer> <FromName>system</FromName> <FromMail>[email protected]</FromMail> <page_count>10</page_count></configure><!-- Provider SQLOLEDB=0 , ODBC=1 , ORACLE=2 -->下面是读取函数, 注nNode是指连到哪个资料库public string CreateConnectionStr(int nNode) { XmlDocument xml=new XmlDocument(); XmlNodeList ns; try { xml.Load(System.Environment.GetFolderPath(System.Environment.SpecialFolder.System)+"//configure.Xml"); ns=xml.SelectNodes("//configure/Server"); XmlNode n1=ns[nNode]; string sTemp=n1.SelectSingleNode("Provider").InnerText.Trim(); string sProvide=""; switch(sTemp) { case "0": { sProvide="sqloledb"; break; } case "1": { break; } case "2": { sProvide="OraOLEDB.Oracle"; break; } } string sDataSource=n1.SelectSingleNode("ServerName").InnerText.Trim(); string sUserID=n1.SelectSingleNode("LoginID").InnerText.Trim(); string sPassword=n1.SelectSingleNode("Password").InnerText.Trim(); strCon= "Provider="+sProvide+";"+"Data Source="+sDataSource+";"+"User Id="+sUserID+";"+"Password="+sPassword+";"; return strCon; } catch(XmlException) { throw new ISDException("Can not load config file"); } catch(XPathException) { throw new ISDException("Can not find node path"); } } #endregion 我也是从别人那里学来的,有兴趣的话可以和我联系[email protected] 这个问题好像是把安装oracle的目录的用户权限更改一下就好了如果是2000/xp系统,就在共享与安全中加入asp_net用户就行了,把权限放到最大(所有权限都有),应该就可以了,如果还不行,把认证用户也加上 有关串口通信的问题 异步套接字的一些操作问题 一个超简单的问题,送分喽 请问可不可以把label1.text邦定到一个txt文档上? 怎么更改datagrid的列名 请问一个DataSet,DataTable问题[大小写],我给的分都比较高 关于下载资源的问题 datagridview添加一行 如何在c#中修改xml中节点的值 csharp 怎样调用农行的网银 WebBrowser 请问在web方式下,一个事物能不能在2个事件中使用?急啊~ 如何修改文件属性中的摘要
2.连接串:
string sConnectionString="Provider=MSDAORA;Pass word=你访问数据库的密码;
User ID=你访问数据库的用户名;Data Source=数据库服务名";
如下:
Provider="MSDAORA.1";User ID=smarthr;Data Source=rsgl;Password=smarthr你可以拖进OleDataAdapter,通过向导来完成。
WEB發布的主機上裝了Oracle,別名也建了﹐且﹕
我用C#寫的小系統(也是連Oracle的)都能正常運行。
SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 1月 6 10:11:51 2004Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.輸入使用者名稱: mycost/mycost@ora54連線到:
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - ProductionSQL>說明可以正常連接到Oracle了。
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.OleDb"%>
<%@ Import Namespace="System.Resources" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<script language="C#" runat="server">
string sql="";
string ConnStr ="Provider=MSDAORA.1;Password=mycost;User ID=mycost;Data Source=ora54";
void Page_Load(Object sender, EventArgs e)
{
//判斷是否隱藏PagerStyle-Mode
if (chk1.Checked)
{
Grid1.PagerStyle.Visible=true;
}
else
{
Grid1.PagerStyle.Visible=false;
}
BindGrid();
}
void BindGrid()
{
//String Provider,DataBase,ConnStr,sql;
//第二步:執行SQL指令,選出記錄集合
OleDbDataAdapter Cmd;
OleDbConnection Cnn;
sql ="select * from m_acct";
Cnn=new OleDbConnection(ConnStr);
Cmd=new OleDbDataAdapter(sql,Cnn);
DataSet ds=new DataSet();
Cmd.Fill(ds,"m_acct");
//第三步:將資料集合同DataGrid結合在一起
Grid1.DataSource=ds.Tables["m_acct"].DefaultView;
Grid1.DataBind();
ShowStats();
}
void PagerButtonClick(Object sender, EventArgs e)
{
//獲得LinkButton的參數值
String arg = ((LinkButton)sender).CommandArgument;
switch(arg)
{
case ("next"):
if (Grid1.CurrentPageIndex < (Grid1.PageCount - 1))
Grid1.CurrentPageIndex ++;
break;
case ("prev"):
if (Grid1.CurrentPageIndex > 0)
Grid1.CurrentPageIndex --;
break;
case ("last"):
Grid1.CurrentPageIndex = (Grid1.PageCount - 1);
break;
default:
//本頁值
Grid1.CurrentPageIndex = int.Parse(arg);
break;
}
BindGrid();
}
public void Grid1_Edit(Object sender, DataGridCommandEventArgs e)
{
Grid1.EditItemIndex = e.Item.ItemIndex;
}
public void Grid1_Cancel(Object sender, DataGridCommandEventArgs e)
{
Grid1.EditItemIndex = -1;
}
public void Grid1_Update(Object sender, DataGridCommandEventArgs e)
{
}
public void Grid1_Delete(Object sender, DataGridCommandEventArgs e)
{
OleDbConnection connDel = new OleDbConnection(ConnStr);
connDel.Open();
String sql_Del = "DELETE FROM m_acct " +
" WHERE acct_no = " + e.Item.Cells[0].Text; OleDbCommand OleDbCommandDel = new OleDbCommand(sql_Del,connDel);
OleDbCommandDel.ExecuteNonQuery();
connDel.Close();
}
void Grid1_Page(Object sender, DataGridPageChangedEventArgs e)
{
//處理按下數位的方法
BindGrid();
}
void ShowStats()
{
//顯示頁面資訊
lblCurrentIndex.Text = "當前頁數: " + ((int)Grid1.CurrentPageIndex+1);
lblPageCount.Text = "總頁數是: " + Grid1.PageCount;
}
</script>
<body> <div align="center">
<h3><font face="Verdana">個性化的分頁實例</font></h3>
<form runat=server>
<ASP:DataGrid id="Grid1" runat="server"
AllowPaging="TRUE"
PageSize="10"
PagerStyle-Mode="NumericPages"
PagerStyle-HorizontalAlign="Right"
OnPageIndexChanged="Grid1_Page"
BorderColor="black"
BorderWidth="1"
GridLines="Both"
CellPadding="3"
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="#eeeeee"
AutoGenerateColumns="false"
OnEditCommand="Grid1_Edit"
OnCancelCommand="Grid1_Cancel"
OnUpdateCommand="Grid1_Update"
OnDelteCommand="Grid1_Delete">
<Columns>
<asp:BoundColumn DataField="ACCT_NO" SortExpression="ACCT_NO" ReadOnly="True" HeaderText="會計科目代碼"></asp:BoundColumn>
<asp:BoundColumn DataField="ACCT_NM" SortExpression="CLASS_NO" HeaderText="科目階層"></asp:BoundColumn>
<asp:BoundColumn DataField="ACCT_CLASS" SortExpression="ACCT_NAME" HeaderText="會計科目名稱"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" CancelText="Cancel" HeaderText="編輯" EditText="Edit" UpdateText="Update" />
<asp:ButtonColumn Text= "Delete" CommandName="Delete" HeaderText="刪除"></asp:ButtonColumn>
</Columns>
</ASP:DataGrid>
<p>
<font face="Verdana" size="-2">
<asp:Label id="lblCurrentIndex" runat="server"/>
<asp:Label id="lblPageCount" runat="server"/>
</font>
<asp:LinkButton id="btnFirst" runat="server"
Text="首頁"
CommandArgument="0"
ForeColor="navy"
Font-Name="verdana" Font-size="8pt"
OnClick="PagerButtonClick"/>
<asp:LinkButton id="btnPrev" runat="server"
Text="前頁"
CommandArgument="prev"
ForeColor="navy"
Font-Name="verdana" Font-size="8pt"
OnClick="PagerButtonClick"/>
<asp:LinkButton id="btnNext" runat="server"
Text="後頁"
CommandArgument="next"
ForeColor="navy"
Font-Name="verdana" Font-size="8pt"
OnClick="PagerButtonClick"/>
<asp:LinkButton id="btnLast" runat="server"
Text="末頁"
CommandArgument="last"
ForeColor="navy"
Font-Name="verdana" Font-size="8pt"
OnClick="PagerButtonClick"/> <asp:Checkbox id="chk1" runat="server"
Text="顯示內置的頁數"
Font-Name="Verdana"
Font-Size="8pt"
AutoPostBack="true"/>
</form>
</div>
</body>
</html>
OleDbConnection conn;
String str_conn="Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=****;Password=****;Data Source=ORCL";
conn=new OleDbConnection(str_conn);
conn.Open();
给你看一个我的连接文件
<configure>
<Server ID="0" TYPE="default" DEBUG="0">
<ServerName>*****</ServerName>
<DBName>*****</DBName>
<LoginID>*****</LoginID>
<Password>*****</Password>
<Provider>2</Provider>
<log>0</log>
</Server>
<Server ID="1" TYPE="server1" DEBUG="0">
<ServerName>*****</ServerName>
<DBName>*****</DBName>
<LoginID>*****</LoginID>
<Password>*****</Password>
<Provider>2</Provider>
<log>0</log>
</Server>
<ERP>Provider=MSDAORA;Password=apps;User ID=apps;Data Source=prd2;</ERP>
<metadata_path>C:\web\metadata\</metadata_path>
<materials_path>D:\Materials\</materials_path>
<classroom_path>C:\web\classroom1\courses\</classroom_path>
<progress_path>C:\web\progress\</progress_path>
<supply_path>C:\web\supply\</supply_path>
<reference_path>C:\web\supply\</reference_path>
<quiz_path>c:\web\quizfile\</quiz_path>
<temp_path>c:\web\temp\</temp_path>
<copy_file>1</copy_file> <SMTPServer>seed.net.tw</SMTPServer>
<FromName>system</FromName>
<FromMail>[email protected]</FromMail>
<page_count>10</page_count>
</configure><!-- Provider SQLOLEDB=0 , ODBC=1 , ORACLE=2 -->下面是读取函数, 注nNode是指连到哪个资料库
public string CreateConnectionStr(int nNode)
{
XmlDocument xml=new XmlDocument();
XmlNodeList ns;
try
{
xml.Load(System.Environment.GetFolderPath(System.Environment.SpecialFolder.System)+"//configure.Xml");
ns=xml.SelectNodes("//configure/Server");
XmlNode n1=ns[nNode];
string sTemp=n1.SelectSingleNode("Provider").InnerText.Trim();
string sProvide="";
switch(sTemp)
{
case "0":
{
sProvide="sqloledb";
break;
}
case "1":
{ break;
}
case "2":
{
sProvide="OraOLEDB.Oracle";
break;
}
}
string sDataSource=n1.SelectSingleNode("ServerName").InnerText.Trim();
string sUserID=n1.SelectSingleNode("LoginID").InnerText.Trim();
string sPassword=n1.SelectSingleNode("Password").InnerText.Trim();
strCon= "Provider="+sProvide+";"+"Data Source="+sDataSource+";"+"User Id="+sUserID+";"+"Password="+sPassword+";";
return strCon;
}
catch(XmlException)
{
throw new ISDException("Can not load config file");
}
catch(XPathException)
{
throw new ISDException("Can not find node path");
}
}
#endregion
[email protected]
如果是2000/xp系统,就在共享与安全中加入asp_net用户就行了,把权限放到最大(所有权限都有),应该就可以了,如果还不行,把认证用户也加上