我有这样的gridview和sqldatasource:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:dbConnectionString %>"
ProviderName="<%$ ConnectionStrings:dbConnectionString.ProviderName %>"
SelectCommand="SELECT * FROM [string]">
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="ID" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False"
ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="HOSTNAME" HeaderText="HOSTNAME"
SortExpression="HOSTNAME" />
<asp:BoundField DataField="DATE" HeaderText="DATE" SortExpression="DATE" />
<asp:BoundField DataField="INT" HeaderText="INT" SortExpression="INT" />
</Columns>
</asp:GridView>
但是当连接收到错误时,页面也会出错。
我想在没有错误页面的情况下使用此连接。如果连接有任何问题(不连接,表不存在等),页面必须打开而不会出错。
我可以在代码后面使用带有oledbconnection的try / catch来实现。我如何为sqldatasource做到这一点?
的ConnectionString:
<add name="dbConnectionString" connectionString="Data Source=databaseip:1521/orcl;Persist Security Info=True;User ID=username;Password=pass;Unicode=True" providerName="System.Data.OracleClient" />
答案 0 :(得分:4)
试试这个。
将using System.Data.OleDb.OleDbConnection;
添加到文件顶部,然后移除using System.Data.SqlConnection;
在web.config中将此添加到您的提供商名称
providerName="System.Data.OleDb"
如果您不希望oledb
更改提供商名称
providerName="System.Data.SqlClient"
答案 1 :(得分:1)
根据我的评论,这是一个基本的例子,你可以根据需要从中扩展。
using (SqlConnection connection = new SqlConnection("Your Connection String"))
{
string sqlQuery = "Your Query";
using (SqlCommand cmd = new SqlCommand(sqlQuery, connection))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
connection.Open();
sda.SelectCommand = cmd;
DataTable dt = new DataTable();
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
}
代码使用using
块,因此对象将被正确处理。我还建议你有一个单独的函数,它返回DataTable
,然后在Page_Load
做
GridView1.DataSource = FunctionName;
GridView1.DataBind();