精华内容
下载资源
问答
  • 跟datatable类型展示在前台的方法差不多 先放在后台dataset转化成list集合再...好了,下面贴上dataset类型直接丢前台遍历的后台代码 前台代码继续贴上 好,这就是以上所有的代码。(MVC的话也是差不多的)细品! ...

    跟datatable类型展示在前台的方法差不多 先放在后台dataset转化成list集合再在前台展示遍历的吧

    后台代码直接贴上在这里插入图片描述
    这种是还建立了datatable然后dataset填充过去。然后转化成list集合前台遍历
    前台代码继续贴上
    在这里插入图片描述
    好了,下面贴上dataset类型直接丢前台遍历的后台代码
    在这里插入图片描述
    前台代码继续贴上
    在这里插入图片描述
    好,这就是以上所有的代码。(MVC的话也是差不多的)细品!

    展开全文
  • 一个将DataSet类型数据转换成Json串的方法
  • 【c#】把Dataset类型转为List<T>

    千次阅读 热门讨论 2017-08-23 16:29:51
    前几天搭档觉得这个过程太复杂,建议直接读取数据库返回泛型集合,如题目所说的把dataset类型的数据转为List泛型集合,不过这样做也需要对list进行分页。本着学习的态度,昨天实践了一下这种方法,主要是封装一个...

        之前分享过将从数据库查出来的datatable数据分页,然后将每一页的数据转成list。前几天搭档觉得这个过程太复杂,建议直接读取数据库返回泛型集合,如题目所说的把dataset类型的数据转为List<T>泛型集合,不过这样做也需要对list进行分页。本着学习的态度,昨天实践了一下这种方法,主要是封装一个dataset to list的工具类。主要代码如下:

            /// <summary>
            /// 获取泛型集合
            /// </summary>
            /// <typeparam name="T">类型</typeparam>
            /// <param name="connStr">数据库连接字符串</param>
            /// <param name="sqlStr">要查询的T-SQL</param>
            /// <returns></returns>
            public IList<T> GetList<T>(string connStr, string sqlStr)
            {
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn))
                    {
                        DataSet ds = new DataSet();
                        sda.Fill(ds);
                        return DataSetToList<T>(ds, 0);
                    }
                }
            }
    
            /// <summary>
            /// DataSetToList
            /// </summary>
            /// <typeparam name="T">转换类型</typeparam>
            /// <param name="dataSet">数据源</param>
            /// <param name="tableIndex">需要转换表的索引</param>
            /// <returns></returns>
            public IList<T> DataSetToList<T>(DataSet dataSet, int tableIndex)
            {
                //确认参数有效
                if (dataSet == null || dataSet.Tables.Count <= 0 || tableIndex < 0)
                    return null;
    
                DataTable dt = dataSet.Tables[tableIndex];
    
                IList<T> list = new List<T>();
    
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //创建泛型对象
                    T _t = Activator.CreateInstance<T>();
                    //获取对象所有属性
                    PropertyInfo[] propertyInfo = _t.GetType().GetProperties();
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        foreach (PropertyInfo info in propertyInfo)
                        {
                            //属性名称和列名相同时赋值
                            if (dt.Columns[j].ColumnName.ToUpper().Equals(info.Name.ToUpper()))
                            {
                                if (dt.Rows[i][j] != DBNull.Value)
                                {
                                    info.SetValue(_t, dt.Rows[i][j], null);
                                }
                                else
                                {
                                    info.SetValue(_t, null, null);
                                }
                                break;
                            }
                        }
                    }
                    list.Add(_t);
                }
                return list;
            }



    展开全文
  • Delphi中连接数据库时,DataSet类型的组件是必用滴,比如:TADOTable组件和TADOQuery组件。而这些组件的Locate函数又是个非常方便的函数,它的功能就是根据关键字定位,而它的形式是这样的: Self.ADOTable1.Locate...
    Delphi中连接数据库时,DataSet类型的组件是必用滴,比如:TADOTable组件和TADOQuery组件。而这些组件的Locate函数又是个非常方便的函数,它的功能就是根据关键字定位,而它的形式是这样的:

    Self.ADOTable1.Locate(FieldName,Value,Option);

    FieldName就是字段名称,Value就是字段的值,这两个没什么好多说的,这里主要讲讲Option参数,也就是选项。

    Option是TLocateOptions类型的,TLocateOptions 是一个集合,定义域集合中有两个元素:

    [loCaseInsensitive] 表示不区分大小写;
    [loPartialKey] 表示可以匹配部分名字;

    当然,如果不要任何开关,也可以写成这样:

    Self.ADOTable1.Locate(FieldName,Value,[]);

    另外补充一个小技巧,当需要通过多个字段进行定位时,可以这样写:

    Locate('Field1;Field2;Field3', VarArrayOf(['Value1', 'Value2', 'Value3']), [loPartialKey]);




    -------------------------------------------------------------------------------------

    Delphi 数据库查询(TADOQuery)
    在一个程序中你会多次查询数据库的,因此在你写的查询方法中定义一个局部的ADOQuery就可以了,它返回一个数据集_RecordSet。最简单的应用如下:

    function GetData: _RecordSet; //获取一张表中的全部数据(_RecordSet是一种类型)
    var
    pADOQ: TADOQuery; //声明
    begin
    pADOQ := TADOQuery.Create(nil); //创建
    pADOQ.Connection := ADOCon; //意思是ADOQuery连接数据库时用ADOConnection建立好的连接。
    pADOQ.SQL.Text := 'select * from TableName';
    pADOQ.Open; //执行查询,如果是增、删、改则用pADOQ.ExecSQL
    Result := pADOQ.Recordset; //函数返回结果
    end;

    接下来是怎样用这个返回的结果集。
    在用的地方再次声明一个ADOQuery,用于接收这个返回的结果集。(当然也可以直接使用)

    var
    pADOQ: TADOQuery;
    pItem: TListItem; //一个listview,用于显示记录
    begin
    pADOQ := TADOQuery.Create(nil);
    pADOQ.RecordSet := GetData; //将结果集赋给pADOQ
    if pADOQ.RecordCount <= 0 then exit; //结果集为空,退出
    pADOQ.First ; //将游标放到结果集的第一条记录
    while not ADOQuery.Eof do //开始循环结果集(当该条记录不是最后一条时)
    begin
    pItem := lvMain.Items.Add; //在listview中加一行
    pItem.Caption := Trim(ADOQuery.FieldByName('patid').AsString);
    pItem.SubItems.Add(ADOQuery.FieldByName('patname').AsString);
    pADOQ.Next; //游标移动到记录的下一条
    end;

     

    2.4.4 ADO数据库访问组件TADOQuery

       TADOQuery组件可以非常方便灵活地对一个或多个数据库表中的记录进行访问。在程序窗体中放置TADOQuery组件的过程同TADOTable组件。

        TADOQuery组件主要属性及方法与TADOTable组件相同,其中:

        SQL属性指定对数据库表进行访问的SQL语句,它可以是一条查询语句也可以是一条修改语句或插入语句等。

        在对象浏览器上,单击SQL属性时,会打开一个字符编辑器供程序设计者输入SQL语句。在SQL属性中,通过SQL语句来指定将要访问的数据库表。


    展开全文
  • 在.net平台C#中有DataTable和DataSet类型的对象,并且非常方便和常用。我们目前项目的服务端采用C#进行开发,在给前台返回响应数据时是直接将DataTable和DataSet类型的对象进行Json序列化后进行返回。Android下并...

    〇、前言

    在.net平台C#中有DataTable和DataSet类型的对象,并且非常方便和常用。我们目前项目的服务端采用C#进行开发,在给前台返回响应数据时是直接将DataTable和DataSet类型的对象进行Json序列化后进行返回。Android下并没有与此对应的DataTable和DataSet对象,所以Android端接收到响应数据时第一件事就是对Json数据进行解析,对于此类固定的格式好的做法是统一在底层进行解析,直接给业务层返回可用的List数据。所以我封装了两个分别解析DataTable和DataSet类型的Json数据的工具类。

    一、解析DataTable类型的Json数据

    DataTable类型的数据示例如下:

    {"TableName":"dt","Table":[{"Row":"1","MACHINE_INSTANCE_ID":"66848","PLANT_ID":"5","PLANT_NAME":"总装1#生产车间","WS_ID":"214","MACHINE_PRODUCT_ID":"2935","SERIES_NAME":"精雕","MODEL_NAME":"CarverPMS23_A8","PRODUCT_CODE":"5593.0033.110014","MAC_POSITION":"A-2-1","PROCESS_BARCODE":"INL01312003418","MACHINE_STATE":"1","MAC_WS_ID":"68622","MAC_AREA_WIDTH":"2000","MAC_AREA_HEIGHT":"2000","PROGRESS_STATE":"59","TEST_CODE":"648","PRODUCT_STATE":"5"},{"Row":"2","MACHINE_INSTANCE_ID":"67280","PLANT_ID":"5","PLANT_NAME":"总装1#生产车间","WS_ID":"214","MACHINE_PRODUCT_ID":"641","SERIES_NAME":"精雕","MODEL_NAME":"JDLVG400E-A8","PRODUCT_CODE":"5593.0053.110032","MAC_POSITION":"A-2-3","PROCESS_BARCODE":"INL01312003474","MACHINE_STATE":"1","MAC_WS_ID":"68880","MAC_AREA_WIDTH":"2500","MAC_AREA_HEIGHT":"2000","PROGRESS_STATE":"55","TEST_CODE":"107","PRODUCT_STATE":"5"},{"Row":"3","MACHINE_INSTANCE_ID":"67279","PLANT_ID":"5","PLANT_NAME":"总装1#生产车间","WS_ID":"214","MACHINE_PRODUCT_ID":"641","SERIES_NAME":"精雕","MODEL_NAME":"JDLVG400E-A8","PRODUCT_CODE":"5593.0053.110032","MAC_POSITION":"A-2-4","PROCESS_BARCODE":"INL01312003473","MACHINE_STATE":"1","MAC_WS_ID":"68881","MAC_AREA_WIDTH":"2500","MAC_AREA_HEIGHT":"2000","PROGRESS_STATE":"55","TEST_CODE":"106","PRODUCT_STATE":"5"}]}

    DataTable类型的数据就是行集合外加表名的封装,以此对应来进行Json解析,如下:

    import com.google.gson.Gson;
    import com.google.gson.JsonElement;
    
    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    import java.util.ArrayList;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    
    /**
     * Description: 用于Json格式字符串数据传输的DataTable类型。
     * Copyright  : Copyright (c) 2020
     * Author     : mliuxb
     * Date       : 2021-03-11 09:00
     */
    public class DataTable<T> {
    
        public String TableName;    //表名
        public ArrayList<T> Table;  //行集合
    
        /**
         * 构造函数
         * @param tableName
         *         表名
         */
        public DataTable(String tableName) {
            TableName = tableName;
            Table = new ArrayList<>();
        }
    
        @NonNull
        private static <T> ParameterizedType getType(@NonNull final Class<T> cls) {
            return new ParameterizedType() {
                @NonNull
                @Override
                public Type[] getActualTypeArguments() {
                    return new Type[]{cls};
                }
    
                @NonNull
                @Override
                public Type getRawType() {
                    return DataTable.class;
                }
    
                @Override
                public Type getOwnerType() {
                    return null;
                }
            };
        }
    
        /**
         * 将json字符串解析为DataTable对象
         */
        @Nullable
        public static <T> DataTable<T> fromJson(@Nullable String json, @NonNull Class<T> cls) {
            //json为null、""(空字符串)、" "(空格或tab)时Gson解析都会返回null(不报异常),所以此处可不进行判空。
            try {
                if (json == null || json.isEmpty()) {
                    //判断字符串是否合法
                    return null;
                }
                Gson gson = new Gson();
                Type type = getType(cls);
                DataTable<T> dataTable = gson.fromJson(json, type);
                if (json.contains("NoneRow") && dataTable != null && dataTable.Table != null) {
                    //判断是否存在空行标识。
                    dataTable.Table.clear();
                }
                return dataTable;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
        /**
         * 将json字符串解析为ArrayList
         */
        @NonNull
        public static <T> ArrayList<T> fromJsonToList(@Nullable String json, @NonNull Class<T> cls) {
            //json为null、""(空字符串)、" "(空格或tab)时Gson解析都会返回null(不报异常),所以此处可不进行判空。
            try {
                if (json == null || json.isEmpty() || json.contains("NoneRow")) {
                    //判断字符串是否合法以及是否存在空行标识。
                    return new ArrayList<>();
                }
                Gson gson = new Gson();
                Type type = getType(cls);
                DataTable<T> dataTable = gson.fromJson(json, type);
                if (dataTable == null || dataTable.Table == null) {
                    return new ArrayList<>();
                } else {
                    return dataTable.Table;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return new ArrayList<>();
            }
        }
    
        /**
         * 将JsonElement解析为DataTable对象
         */
        @Nullable
        static <T> DataTable<T> fromJson(@Nullable JsonElement element, @NonNull Class<T> cls) {
            try {
                if (element == null || element.isJsonNull()) {
                    //判断字符串是否合法
                    return null;
                }
                Gson gson = new Gson();
                Type type = getType(cls);
                DataTable<T> dataTable = gson.fromJson(element, type);
                if (element.toString().contains("NoneRow") && dataTable != null && dataTable.Table != null) {
                    //判断是否存在空行标识。
                    dataTable.Table.clear();
                }
                return dataTable;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    
        /**
         * 将JsonElement解析为ArrayList
         */
        @NonNull
        static <T> ArrayList<T> fromJsonToList(@Nullable JsonElement element, @NonNull Class<T> cls) {
            try {
                if (element == null || element.isJsonNull() || element.toString().contains("NoneRow")) {
                    //判断字符串是否合法以及是否存在空行标识。
                    return new ArrayList<>();
                }
                Gson gson = new Gson();
                Type type = getType(cls);
                DataTable<T> dataTable = gson.fromJson(element, type);
                if (dataTable == null || dataTable.Table == null) {
                    return new ArrayList<>();
                } else {
                    return dataTable.Table;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return new ArrayList<>();
            }
        }
    
    
        private transient final Gson gson = new Gson();
    
        /**
         * 将DataTable对象序列化为json字符串
         */
        public String toJson() {
            return gson.toJson(this);
        }
    }

    二、解析DataSet类型的Json数据

    DataSet类型的Json数据示例如下:

    [{"TableName":"dt","Table":[{"FIRST_PHONE":"17333672366","USER_ID":"1674","USER_NAME":"姓名","PRODUCE_GROUP_ID":"1","PRODUCE_GROUP_NAME":"生产管理组"}]},{"TableName":"dt1","Table":[{"NUM":"1","BASIC_PROCESS_ID":"75","MACHINE_INSTANCE_ID":"21766","ACTUAL_HOUR":"0.140400","STANDARD_HOUR":"35.40","START_TIME":"2019-03-11 18:39","END_TIME":"2019-03-11 18:39","BP_NAME":"检验员用球杆仪检测","TEST_CODE":"L20170915","MODEL_NAME":"JDPMS16E_A8(16169)","POSITION":"清理车间:598","IS_SCHEDU":"否"},{"NUM":"2","BASIC_PROCESS_ID":"1196","MACHINE_INSTANCE_ID":"66936","ACTUAL_HOUR":"0.000000","STANDARD_HOUR":"3.60","START_TIME":"2020-11-21 09:29","END_TIME":"","BP_NAME":"组装联轴节","TEST_CODE":"100","MODEL_NAME":"JDWGM800_A10","POSITION":"移位入库至机械主机库仓位","IS_SCHEDU":"否"}]}]

    DataSet类型的数据就是多个DataTable类型的集合,对应的Json数据解析如下:

    import com.google.gson.JsonArray;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
    
    import java.util.ArrayList;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    
    /**
     * Description: 用于Json格式字符串数据传输的DataSet类型。
     * Copyright  : Copyright (c) 2020
     * Author     : mliuxb
     * Date       : 2021-03-11 09:16
     */
    public class DataSet {
        //private static final String TAG = "DataSet";
    
        //表集合
        //private ArrayList<DataTable<?>> tables = new ArrayList<>();
        private final JsonArray mJsonSet;
    
        /**
         * 构造函数
         * @param dataSetJson DataSet格式的Json字符串
         */
        public DataSet(@NonNull String dataSetJson) {
            final JsonElement setElement = new JsonParser().parse(dataSetJson);
            if (setElement != null && setElement.isJsonArray()) {
                mJsonSet = setElement.getAsJsonArray();
            } else {
                mJsonSet = null;
            }
        }
    
        @NonNull
        public <T> ArrayList<T> fromJsonToList(@Nullable String tableName, @NonNull Class<T> cls) {
            if (mJsonSet == null || tableName == null) {
                return new ArrayList<>();
            }
            for (final JsonElement tableElement : mJsonSet) {
                final JsonObject jsonTable = tableElement.getAsJsonObject();
                String strTableName = jsonTable.getAsJsonPrimitive("TableName").getAsString();
                if (tableName.equals(strTableName)) {
                    return DataTable.fromJsonToList(jsonTable, cls);
                }
            }
            //无对应的tableName时,返回空集合
            return new ArrayList<>();
        }
    }

    三、分页的Json数据

    分页的Json数据就是对DataTable又包装了一层,示例如下:

    对应的Json数据解析如下:

    import com.google.gson.Gson;
    
    import java.util.ArrayList;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import jdlf_scgl_zp_android.s005_service.wcf.DataTable;
    
    /**
     * Description: PageDataSource
     * Copyright  : Copyright (c) 2020
     * Author     : mliuxb
     * Date       : 2021/03/11 10:47
     */
    public class PageDataSource {
    
        private int TotalCount;
        private int pageCount;
        private String Table;
    
        @NonNull
        public static <T> ArrayList<T> fromJson(@Nullable String strJson, Class<T> classType) {
            try {
                Gson gsn = new Gson();
                //strJson为null、""(空字符串)、" "(空格或tab)时Gson解析都会返回null(不报异常),所以此处可不进行判空。
                PageDataSource pds = gsn.fromJson(strJson, PageDataSource.class);
                if (pds == null) {
                    return new ArrayList<>();
                } else {
                    return DataTable.fromJsonToList(pds.Table, classType);
                }
            } catch (Exception e) {
                e.printStackTrace();
                return new ArrayList<>();
            }
        }
    }

     

    展开全文
  • C#读取数据库返回泛型集合 把DataSet类型转换为List泛型集合 2012-09-06 11:03 by swarb, ... 阅读, ... 评论, 收藏, 编辑 http://www.cnblogs.com/wuhuisheng/category/257549.html     /// ...
  • 今天用SmartGridView到出Excel出现“若要导出SmartGridView,应保证其数据源为DataTable或DataSet类型”花了老半天终于解决。。原来是前台要加上<%@ Page EnableViewState="false"
  • 但是我想知道如果我需要的是一个dataset类型的返回结果,服务器用什么方法才能把这样的结果返回过来 用的是TCP连接,我目前只能让服务器返回string类型的结果[img=...
  • 在MATLAB(R2017a)中运行该模型后,MATLAB工作空间中会有类型Dataset的logsout变量,下面是读取并显示其中数据的MATLAB代码: % 读取Simulink.SimulationData.Dataset中的数据 data = logsout.get(1).Values.Data...
  • 先监视DataSet,打开dataset,dataset下面有一个tablesTables打开有一个非公共成员,然后下面有一个List,List中存储了每一张表的信息 下图所示的List下面的[0]表明此dataset中只是存储了一张表 ============= ...
  • Axis1.4调用.Net返回值为DataSet类型的WebService接口 1.相关说明 2.Axis1.4下载及依赖 1.Axis1.4下载 1.非maven环境导入依赖的包 3.maven环境导入依赖的包 3.WebService服务接口地址 4.编写调用WebService服务的...
  • WritableSheet dataset = wwb . createSheet ( "DataSet" , 0 ) ; WritableSheet series = wwb . createSheet ( "Series" , 1 ) ; WritableSheet platform = wwb . createSheet ( "Platform" , 2 ) ...
  • 安卓调用webservice返回Dataset类型赋值给litseview例子
  • DataSet dsData = new DataSet(); conn.Open(); //tbSchema存储该Execl中所有Sheet的名称 等信息(无具体内容) DataTable tbSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, ...
  • 大致流程介绍: 传值给webserver+XML ,得到webserver+XML多个返回值,组装成dataset形式返回...首先创建所需要的类型 DataSet ds = new DataSet(); //表集合 DataTable dt = new DataTable; //表 dt.Columns.Add...
  • CausesValidation 属性设置:未设置为 False 而导致 Ajax 回调时无反应,或设置了 True...客户端调用 WebService ,其中 WebService 返回的是 DataSet 对象 :出现错误提示“WebMethod Dataset System.InvalidOperat...
  • ////指定webservice的类型的(java,PHP,dotNet) [color=#FF0000][/color]// 等价于envelope.bodyOut = rpc; envelope.setOutputSoapObject(rpc); HttpTransportSE transport = new HttpTransportSE...
  • <?xml version="1.0" encoding="utf-8"?> <q1:HotelGeoList xmlns:q1="http://api.elong.com/staticInfo/"> <q1:HotelGeo> <q1:id>1</q1:id> <q1:country>...~~
  • JAVA调用DOTNET写的返回为DataSet类型的WebService函数出错 出错信息为: <mime:content type="application/x-www-form-urlencoded" /> cvc-complex-type.4:Attribte 'part' must appear on element 'mime:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,297
精华内容 1,318
关键字:

dataset类型