DevExpress数据源SqlDataSource使用

DevExpress对数据源进行了重新封装产生了只读数据源SqlDataSource,相较于传统的ADO.NET更易于使用。

SqlDataSource组件旨在创建和配置数据库以访问WinForms应用程序中的各种数据感知控件。使用它来提供对DevExpress.XtraGrid.GridControl,DevExpress.XtraTreeList.TreeList,DevExpress.XtraCharts.ChartControl或可以通过数据源配置向导配置的任何其他DevExpress控件的数据库访问。

SqlDataSource支持众多数据提供者,包括:

Amazon Redshift
Firebird
Google BigQuery
IBM DB2
Microsoft Access 2007
Microsoft Access 97
Microsoft SQL Server
Microsoft SQL Server Compact Edition
MySQL
Oracle
Pervasive PSQL
PostgreSQL
SAP Sybase Advantage
SAP Sybase ASE
SAP Sybase SQL Anywhere
SQLite
Teradata
VistaDB
VistaDB5
XML file

使用方式:

1、创建SqlDataSource

SqlDataSource控件直接拖拉到winform页面上,点击右上角小三角形,配置连接(Configure Connection...),配置sql查询(Manage Queries...)等等,详见https://documentation.devexpress.com/CoreLibraries/DevExpress.DataAccess.Sql.SqlDataSource.class

配置连接成功后会在App.config文件中生成连接字符串,如下所示:



    
        
    
     
        
    
  
    
  

App.config使用xml文件风格,connectionstrings下包括该项xml名字,数据库类型,用户名密码等,这里的名字等会还需要用到。

2、手动建立查询

由于是只读的,只能使用SqlDataSource进行查询,在第一步基础上添加代码,或者直接新建SqlDataSource

 	    string sql = "SELECT * FROM table";//sql语句
            query.Name = "trend";
            query.Sql = sql;

            SqlDataSource sqlDataSourceTrend = new SqlDataSource();
            sqlDataSourceTrend.ConnectionName = "localhost_Connection";//用到了connectionstrings下的连接名
            sqlDataSourceTrend.Queries.Add(query);
            sqlDataSourceTrend.Fill();
查询后怎样使用数据呢?这里我们用datatable这个数据格式来读取数据。

3、使用DataTable读取数据

	    ITable src = sqlDataSourceTrend.Result["trend"];
            DataTable table = new DataTable("trend");
            foreach (IColumn column in src.Columns)
                table.Columns.Add(column.Name, column.Type);
            foreach (IRow row in src)
                table.Rows.Add(row.ToArray());
DataTable是存在内存中的表结构,可以方便地读取数据或作为控件的数据源,如:

		lookUpEdit7.Properties.ValueMember = "ScanTime";//选取要绑定的列
                lookUpEdit7.Properties.DisplayMember = "ScanTime";
                lookUpEdit7.Properties.DataSource = table;//将datatable作为数据源
或者利用数据进行运算
		int holeCount = table.Rows.Count;
                
                string ScanTime = table.Rows[0]["ScanTime"].ToString();
                string ScanDeskId = table.Rows[0]["ScanDeskId"].ToString();
                for (int i = 0; i < 3; i++)
                {
                    for (int j = 0; j < holeCount; j++)
                    {
                        double tempDouble = Convert.ToDouble(table.Rows[j][tempStr[i][0]].ToString()) - Convert.ToDouble(table.Rows[j][tempStr[i][1]].ToString());
}


		}

调用时使用datatable.rows[行数][‘列名’]这种格式即可。更多dataTable教程请见 点击打开链接



你可能感兴趣的:(DevExpress,devexpress,sqldatasource,winform,datatable,ado.net)