DevExpress数据源SqlDataSource使用

来源:互联网 发布:数据存储管理软件 编辑:程序博客网 时间:2024/05/22 01:50

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

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

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

Amazon RedshiftFirebirdGoogle BigQueryIBM DB2Microsoft Access 2007Microsoft Access 97Microsoft SQL ServerMicrosoft SQL Server Compact EditionMySQLOraclePervasive PSQLPostgreSQLSAP Sybase AdvantageSAP Sybase ASESAP Sybase SQL AnywhereSQLiteTeradataVistaDBVistaDB5XML file

使用方式:

1、创建SqlDataSource

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

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

<?xml version="1.0" encoding="utf-8" ?><configuration>    <connectionStrings>        <add name="localhost_Connection" connectionString="XpoProvider=MySql;server=localhost;port=3306;user id=root; password=xxxxxx; database=historydata;persist security info=true;CharSet=utf8;" />    </connectionStrings>    <startup>         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />    </startup>  <appSettings>    <add key="flag" value="false" />  </appSettings></configuration>

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教程请见 点击打开链接

 
原创粉丝点击