FineUI 官方论坛

标题: expasp连接oracle问题求助 [打印本页]

作者: zzq    时间: 2013-7-9 13:53
标题: expasp连接oracle问题求助
本人学习根据联动条件和分页进行查询设计过程中,用extaspnet在线示例进行修改出现如图错误,求助!web.config 配置
   <connectionStrings>
        <add name="ConnectionString" connectionString="Data Source=scersist Security Info=True;User ID=readonlyassword=123;Unicode=True" providerName="System.Data.OracleClient" />
    </connectionStrings>
  1. dj_nsrdnbm.aspx 文件如下:
  2.     <form id="form1" runat="server">
  3.     <ext:PageManager ID="PageManager1" runat="server" />
  4.        
  5.         <ext:Panel ID="Panel7" runat="server" EnableBackgroundColor="true" BodyPadding="3px"
  6.         ShowBorder="True" ShowHeader="True" Width="800px" Height="350px" Title="查询条件"
  7.         Layout="Anchor">
  8.         <Items>
  9.             <ext:Form ID="Form5" ShowBorder="False" BodyPadding="5px" AnchorValue="100%" EnableBackgroundColor="true"
  10.                 ShowHeader="False" runat="server">
  11.                 <Rows>
  12.                     <ext:FormRow>
  13.                         <Items>
  14. <ext:DropDownList ID="zgswjg_ddl" Label="主管税务机关" runat="server" AutoPostBack="True"  OnSelectedIndexChanged="zgswjg_ddl_SelectedIndexChanged">
  15.                              </ext:DropDownList>                          
  16.                              <ext:DropDownList ID="zgy_ddl" Label="管理员" runat="server">
  17.                              </ext:DropDownList>
  18.                         </Items>
  19.                     </ext:FormRow>
  20.                     <ext:FormRow>
  21.                         <Items>
  22.                             <ext:Button ID="Button1" Text="查询" runat="server" OnClick="Button1_Click">
  23.                             </ext:Button>                                       
  24.                         </Items>
  25.                     </ext:FormRow>
  26.                 </Rows>
  27.             </ext:Form>
  28.             <ext:Panel ID="Panel8" ShowBorder="True" ShowHeader="false" AnchorValue="100% -62"
  29.                 Layout="Fit" runat="server">
  30.                 <Items>
  31.        
  32.     <ext:Grid ID="Grid1" Title="查询结果" Width="800px" PageSize="20" ShowBorder="true" ShowHeader="true"
  33.         AutoHeight="true" AllowPaging="true" runat="server" EnableCheckBoxSelect="True"
  34.         DataKeyNames="Id,Name" IsDatabasePaging="true" OnPageIndexChange="Grid1_PageIndexChange"
  35.         EnableRowNumber="True">
  36.         <Columns>
  37.                     <ext:BoundField Width="100px" DataField="taxper_id" DataFormatString="{0}" HeaderText="纳税人电脑编码" />
  38.             <ext:BoundField Width="300px" DataField="taxper_name" HeaderText="纳税人名称" />
  39.             <ext:BoundField Width="300px" DataField="duty_office_name" HeaderText="税务机关" />
  40.             <ext:BoundField Width="100px" DataField="staff_name" HeaderText="管理员" />
  41.         </Columns>
  42.     </ext:Grid>
  43.                 </Items>
  44.             </ext:Panel>
  45.         </Items>
  46.     </ext:Panel>
  47.     </form>

  48. dj_nsrdnbm.aspx.cs文件如下:

  49. using System;
  50. using System.Collections.Generic;
  51. using System.Web;
  52. using System.Web.UI;
  53. using System.Web.UI.WebControls;
  54. using System.Data;
  55. using xjy.DAL;

  56. namespace ExtAspNet.Examples.grid
  57. {
  58.     public partial class grid_database_paging : PageBase
  59.     {
  60.         protected void Page_Load(object sender, EventArgs e)
  61.         {
  62.             if (!IsPostBack)
  63.             {
  64.             BindGrid();
  65.                         BindZgswjg();
  66.                         BindZgy();         
  67.            
  68.             }
  69.         }

  70.          protected void BindZgswjg()
  71.                    {
  72.                     OraDbHelper action = new OraDbHelper();
  73.                     string selectzgswjg = "select duty_office_code,duty_office_name from pc_area_code";
  74.             zgswjg_ddl.DataSource = action.ExecuteDataTable(selectzgswjg);
  75.             zgswjg_ddl.DataTextField = "duty_office_name";
  76.             zgswjg_ddl.DataValueField = "duty_office_code";
  77.             zgswjg_ddl.DataBind();
  78.             zgswjg_ddl.Items.Insert(0, "[主管税务机关]");
  79.             zgswjg_ddl.Items[0].Value = "";
  80.                     }
  81.                
  82.                    protected void BindZgy()
  83.                     {
  84.                     OraDbHelper action = new OraDbHelper();
  85.             string selectzgy = "select staff_code,staff_name from pc_staff where duty_office_code='" + zgswjg_ddl.SelectedValue + "'";
  86.             zgy_ddl.DataSource = action.ExecuteDataTable(selectzgy);
  87.             zgy_ddl.Items.Clear();
  88.             zgy_ddl.DataTextField = "staff_name";
  89.             zgy_ddl.DataValueField = "staff_code";
  90.             zgy_ddl.DataBind();
  91.             zgy_ddl.Items.Insert(0, "[请选择--管理员]");
  92.             zgy_ddl.Items[0].Value = "";
  93.                     }
  94.                     
  95.                         protected void zgswjg_ddl_SelectedIndexChanged(object sender, EventArgs e)
  96.             {
  97.              zgy_ddl.Items.Clear();
  98.                          BindZgy();
  99.                     }
  100.                   
  101.                   
  102.         #region BindGrid

  103.         private void BindGrid()
  104.         {
  105.             // 1.设置总项数
  106.             Grid1.RecordCount = GetTotalCount();

  107.             // 2.获取当前分页数据
  108.             DataTable table = GetPagedDataTable(Grid1.PageIndex, Grid1.PageSize);

  109.             // 3.绑定到Grid
  110.             Grid1.DataSource = table;
  111.             Grid1.DataBind();
  112.         }

  113.         /// <summary>
  114.         /// 模拟返回总项数
  115.         /// </summary>
  116.         /// <returns></returns>
  117.         private int GetTotalCount()
  118.         {
  119.             return GetDataTable().Rows.Count;
  120.         }

  121.         /// <summary>
  122.         /// 模拟数据库分页
  123.         /// </summary>
  124.         /// <returns></returns>
  125.         private DataTable GetPagedDataTable(int pageIndex, int pageSize)
  126.         {
  127.             DataTable source = GetDataTable();

  128.             DataTable paged = source.Clone();

  129.             int rowbegin = pageIndex * pageSize;
  130.             int rowend = (pageIndex + 1) * pageSize;
  131.             if (rowend > source.Rows.Count)
  132.             {
  133.                 rowend = source.Rows.Count;
  134.             }

  135.             for (int i = rowbegin; i < rowend; i++)
  136.             {
  137.                 paged.ImportRow(source.Rows[i]);
  138.             }

  139.             return paged;
  140.         }

  141.         #endregion

  142.         #region Events

  143.         protected void Button1_Click(object sender, EventArgs e)
  144.         {
  145.             labResult.Text = HowManyRowsAreSelected(Grid1);
  146.         }


  147.         protected void Grid1_PageIndexChange(object sender, ExtAspNet.GridPageEventArgs e)
  148.         {
  149.             Grid1.PageIndex = e.NewPageIndex;

  150.             BindGrid();
  151.         }

  152.         #endregion

  153.     }
  154. }


复制代码

作者: zzq    时间: 2013-7-9 13:57
补充
OraDbHelper.cs文件如下:

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;
namespace xjy.DAL  
{  
       /// OraDbHelper 对ORACLE 数据库操作的通用类  
       public class OraDbHelper  
    {  
        private string connectionString;  
             /// 设置数据库字符串的连接  
            public string ConnectionString  
        {  
            set { connectionString = value; }  
        }  
        public OraDbHelper()  
        {
                this.connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; ;  
        }  
        #region ExecuteDataTable  
               /// 执行一个查询,并返回结果集  
               /// <param name="commandText">要执行的查询SQL文本命令</param>  
        /// <returns>返回查询结果集</returns>  
        public DataTable ExecuteDataTable(string commandText)  
        {  
            return ExecuteDataTable(commandText, CommandType.Text, null);  
        }  
             /// 执行一个查询,并返回查询结果  
              /// <param name="commandText">要执行的SQL语句</param>  
        /// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>  
        /// <returns>返回查询结果集</returns>  
        public DataTable ExecuteDataTable(string commandText, CommandType commandType)  
        {  
            return ExecuteDataTable(commandText, commandType, null);  
        }  
              /// 执行一个查询,并返回查询结果  
              /// <param name="commandText">要执行的SQL语句</param>  
        /// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>  
        /// <param name="parameters">PL-SQL 语句或存储过程的参数数组</param>  
        /// <returns></returns>  
        public DataTable ExecuteDataTable(string commandText, CommandType commandType, params OracleParameter[] parameters)  
        {  
            DataTable data = new DataTable();//实例化DataTable,用于装载查询结果集;  
                OracleConnection connection = new OracleConnection(connectionString);
             OracleCommand command = new OracleCommand(commandText, connection);
             command.CommandType = commandType;//设置command的CommandType为指定的CommandType  
                    //如果同时传入了参数,则添加这些参数  
                    if (parameters != null)  
                    {  
                        foreach (OracleParameter parameter in parameters)  
                        {  
                            command.Parameters.Add(parameter);  
                        }  
                    }  
                    //通过包含查询SQL的SqlCommand实例来实例化SqlDataAdapter  
                    OracleDataAdapter adapter = new OracleDataAdapter(command);  
  
                 adapter.Fill(data);//填充DataTable  
                 
            
            return data;  
        }  
        #endregion ExecuteDataTable  

        #region ExecuteReader  
  
             public OracleDataReader ExecuteReader(string commandText)  
        {  
            return ExecuteReader(commandText, CommandType.Text, null);  
        }  
             /// 将 CommandText 发送到 Connection 并生成一个 OracleDataReader。  
               /// <param name="commandText">要执行的SQL语句</param>  
        /// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>  
             public OracleDataReader ExecuteReader(string commandText, CommandType commandType)  
        {  
            return ExecuteReader(commandText, commandType, null);  
        }  
               /// 将 CommandText 发送到 Connection 并生成一个 OracleDataReader。  
              /// <param name="commandText">要执行的SQL语句</param>  
        /// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param>  
        /// <param name="parameters">Transact-SQL 语句或存储过程的参数数组</param>  
             public OracleDataReader ExecuteReader(string commandText, CommandType commandType, OracleCommand[] parameters)  
        {  
            OracleConnection connection = new OracleConnection(connectionString);  
            OracleCommand command = new OracleCommand(commandText, connection);
                command.CommandType = commandType;
             //如果同时传入了参数,则添加这些参数  
            if (parameters != null)  
            {  
                foreach (OracleCommand parameter in parameters)  
                {  
                    command.Parameters.Add(parameter);  
                }  
            }  
            connection.Open();  
            //CommandBehavior.CloseConnection参数指示关闭Reader对象时关闭与其关联的Connection对象  
            return command.ExecuteReader(CommandBehavior.CloseConnection);  
        }  
        #endregion ExecuteReader  

        #region ExecuteScalar  
             /// 从数据库中检索单个值(例如一个聚合值)。  
              /// <param name="commandText">要执行的查询PL-SQL文本命令</param>  
             public Object ExecuteScalar(string commandText)  
        {  
            return ExecuteScalar(commandText, CommandType.Text, null);  
        }  
              /// 从数据库中检索单个值(例如一个聚合值)。  
              /// <param name="commandText">要执行的SQL语句</param>  
        /// <param name="commandType">要执行的查询语句的类型,如存储过程或者PL-SQL文本命令</param>  
        /// <returns></returns>  
           public Object ExecuteScalar(string commandText, CommandType commandType)  
        {  
            return ExecuteScalar(commandText, commandType, null);  
        }  
                         public Object ExecuteScalar(string commandText, CommandType commandType, OracleParameter[] parameters)  
        {  
            object result = null;
                OracleConnection connection = new OracleConnection(connectionString);
             OracleCommand command = new OracleCommand(commandText, connection);
              command.CommandType = commandType;//设置command的CommandType为指定的CommandType  
                    //如果同时传入了参数,则添加这些参数  
                    if (parameters != null)  
                    {  
                        foreach (OracleParameter parameter in parameters)  
                        {  
                            command.Parameters.Add(parameter);  
                        }  
                    }  
                    connection.Open();//打开数据库连接  
                    result = command.ExecuteScalar();
                        connection.Close();           
                    
            return result;//返回查询结果的第一行第一列,忽略其它行和列  
        }  

        #endregion ExecuteScalar  

        #region ExecuteNonQuery  
                    public int ExecuteNonQuery(string commandText)  
        {  
            return ExecuteNonQuery(commandText, CommandType.Text, null);  
        }  
                      public int ExecuteNonQuery(string commandText, CommandType commandType)  
        {  
            return ExecuteNonQuery(commandText, commandType, null);  
        }  
        /// <summary>  
        /// 对数据库执行增删改操作  
        /// </summary>  
        /// <param name="commandText">要执行的pl-sql语句</param>  
        /// <param name="commandType">要执行的查询语句的类型,如存储过程或者pl-sql文本命令</param>  
        /// <param name="parameters">pl-sql 语句或存储过程的参数数组</param>  
        /// <returns>返回执行操作受影响的行数</returns>  
        public int ExecuteNonQuery(string commandText, CommandType commandType, OracleParameter[] parameters)  
        {  
            int count = 0;
                OracleConnection connection = new OracleConnection(connectionString);  
            OracleCommand command = new OracleCommand(commandText, connection);
            command.CommandType = commandType;//设置command的CommandType为指定的CommandType  
                    //如果同时传入了参数,则添加这些参数  
                    if (parameters != null)  
                    {  
                        foreach (OracleParameter parameter in parameters)  
                        {  
                            command.Parameters.Add(parameter);  
                        }  
                    }  
                    connection.Open();//打开数据库连接  
                    count = command.ExecuteNonQuery();
                        connection.Close();
              return count;//返回执行增删改操作之后,数据库中受影响的行数  
        }  
        
                 
         
        #endregion ExecuteNonQuery  
    }  
}  





欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4