将DataReader转换为DataTable的一个函数

有人问到这个,就参照DNN的实现,用C#写了一个。记录下来作为备忘。

 

 1 None.gif          public   static  DataTable ConvertDataReaderToDataTable(IDataReader reader)
 2 ExpandedBlockStart.gifContractedBlock.gif         dot.gif {
 3InBlock.gif            DataTable objDataTable = new DataTable();
 4InBlock.gif            int intFieldCount = reader.FieldCount;
 5InBlock.gif            for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
 6ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
 7InBlock.gif                objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
 8ExpandedSubBlockEnd.gif            }

 9InBlock.gif
10InBlock.gif            objDataTable.BeginLoadData();
11InBlock.gif            
12InBlock.gif            object[] objValues = new object[intFieldCount];
13InBlock.gif            while (reader.Read())
14ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
15InBlock.gif                reader.GetValues(objValues);
16InBlock.gif                objDataTable.LoadDataRow(objValues, true);
17ExpandedSubBlockEnd.gif            }

18InBlock.gif            reader.Close();
19InBlock.gif            objDataTable.EndLoadData() ;
20InBlock.gif 
21InBlock.gif            return objDataTable;
22ExpandedBlockEnd.gif        }

23 None.gif

如果需要的话,columns的详细列属性还可以设置,比如IsDbNull等等。reader还有一个GetSchemaTable的方法,可以获得详细的列属性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Unity连接MySQL数据库的函数封装: ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using MySql.Data.MySqlClient; public class MySQLConnector : MonoBehaviour { private MySqlConnection connection; private string server; private string database; private string uid; private string password; // 初始化连接 public void InitConnection() { server = "localhost"; database = "mydatabase"; uid = "username"; password = "password"; string connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; connection = new MySqlConnection(connectionString); } // 打开连接 public bool OpenConnection() { if (connection.State == ConnectionState.Open) { return true; } try { connection.Open(); return true; } catch (MySqlException ex) { Debug.Log(ex.Message); return false; } } // 关闭连接 public bool CloseConnection() { if (connection.State == ConnectionState.Closed) { return true; } try { connection.Close(); return true; } catch (MySqlException ex) { Debug.Log(ex.Message); return false; } } // 执行查询 public List<string>[] Select(string query) { List<string>[] result = new List<string>[2]; result[0] = new List<string>(); result[1] = new List<string>(); if (OpenConnection() == true) { MySqlCommand cmd = new MySqlCommand(query, connection); MySqlDataReader dataReader = cmd.ExecuteReader(); while (dataReader.Read()) { result[0].Add(dataReader["id"] + ""); result[1].Add(dataReader["name"] + ""); } dataReader.Close(); CloseConnection(); return result; } else { return result; } } // 执行插入、更新、删除等操作 public void ExecuteNonQuery(string
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值