使用datatables样式,是否可以实现 将DB中取出的一组数据分行显示?

using System.Data.SqlC
private bool TransferData2DB(DataTable dt)
bool bResult =
SqlConnection conn = new SqlConnection(SqlHelper.ConnString);
conn.Open();
SqlTransaction tran = conn.BeginTransaction();
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, tran);//创建SqlBulkCopy对象
// bulkCopy = new SqlBulkCopy(sqlConn, SqlBulkCopyOptions.KeepNulls, tran);
sqlBulkCopy.DestinationTableName = cboTableName.T//目标数据库表名
sqlBulkCopy.ColumnMappings.Clear();
for (int j = 0; j & dt.Columns.C j++)
sqlBulkCopy.ColumnMappings.Add((string)dt.Columns[j].ColumnName, (string)dt.Columns[j].ColumnName);//匹配列名
sqlBulkCopy.WriteToServer(dt);//将源表中的数据写入数据库中目标表中
tran.Commit();
catch (Exception ex)
tran.Rollback();
Common.DisplayMsg(this.Text, ex.Message);
sqlBulkCopy.Close();
GC.Collect();
1,要指定数据库连接字符串 SqlHelper.ConnString
关于数据库连接字符串,一般有2种格式:
(1),Windows验证
Common.ConnString = @"Initial Catalog=数据库名;Data Source=电脑名或IP地址;Integrated Security=SSPI";
(2), Sql混合验证
Common.ConnString = @"server=电脑名或IP地址;database=数据库名;uid=用户名;password=密码";
2,要指定目标数据库表名 cboTableName.Text
(这2个换成你自己对应的内容就好了)
3,事先把需要批量导入的数据放到dataTable中即可
Java使用SQLServerBulkCopy实现数据库批量操作
SqlServer批量导入C#100万条数据仅4秒附源码
C#与SQLServer数据库连接
使用SqlBulkCopy批量快速插入大量数据到SQL SERVER
SQLServer大批量数据导入
没有更多推荐了,//定义一个DataView ,得到一个全部职员的视图
DataView dataView1 = DbHelperSQL.QueryDataView(sql);
//过滤得到一个只显示男职员的视图
dataView1.RowFilter = " sex='男' ";
//放弃过滤,现在仍然能够得到一个全部职员的视图
dataView1.RowFilter =
//现在过滤得到一个只显示女职员的视图
dataView1.RowFilter = " sex='女' ";
//获取性别字段为空的职员
dataView1.RowFilter = " sex is null ";
dataView1.RowFilter = " Isnull( sex, 'Null Column') = 'Null Column' ";
//获取时间为空(NULL)和非空的视图
dataView1.RowFilter = " AddTime is null ";//空
dataView1.RowFilter = " AddTime is not null ";// 非空
//或者这里也可以先用Convert将日期时间(DateTime)字段转为字符串,然后做空值比较
dataView1.RowFilter = " Isnull( Convert(AddTime, 'System.String'),'Null Column') = 'Null Column' "; //空
dataView1.RowFilter = " not ( Isnull( Convert(AddTime, 'System.String'),'Null Column') = 'Null Column' ) "; // 非空
DataTable dt = DataView.ToTable();正确的。
DataTable dt = DataView.T 获取的是原来构造DataView的那个原表(没有过滤之前的那个表)。
重点在于DataView是DateTable相关联 的一个视图而已,无论你如何使用RowFilter,DataView虽然被改变,但 DateTable数据不会减少,所以你不要幻想连续使用多个RowFilter 来得到叠加过滤的效果,一个DataView只支持一个RowFilter,你只能使用 not ,and 来连接多个过滤条件。
--------------------------------------------------------------------------------------------------------------------------
若要形成 RowFilter 值,请指定列的名称,后跟一个运算符和一个要筛选的值。 该值必须用引号括起来。 例如:
"LastName = 'Smith'"
若要只返回那些具有 null 值的列,请使用以下表达式:
"Isnull(Col1,'Null Column') = 'Null Column'"
下面的示例创建
并设置它的 RowFilter 属性。
private void MakeDataView()
DataView view = new DataView();
view.Table = DataSet1.Tables["Suppliers"];
view.AllowDelete =
view.AllowEdit =
view.AllowNew =
view.RowFilter = "City = 'Berlin'";
view.RowStateFilter = DataViewRowState.ModifiedC
view.Sort = "CompanyName DESC";
// Simple-bind to a TextBox control
Text1.DataBindings.Add("Text", view, "CompanyName");
http://liug-li.blog.163.com/blog/static//
筛选DataTable数据的方法
C# DataTable RowFilter 过滤
dataTable中筛选数据(datatable.select 和dataview.RowFilter)
数据视图DataView中,行过滤RowFilter的技巧整理
DataView数据筛选
没有更多推荐了,DbDataAdapter.Fill 方法 (Int32, Int32, DataTable[]) (System.Data.Common)
Fill 方法 (Int32, Int32, DataTable[])
本文档已存档,并且将不进行维护。
DbDataAdapter.Fill 方法 (Int32, Int32, DataTable[])
.NET Framework 2.0
注意:此方法在 .NET Framework 2.0 版中是新增的。
在 DataTable 中添加或刷新行以匹配使用 DataTable 名称、指定的 SQL SELECT 语句和 CommandBehavior 的数据源中的行。
命名空间:System.Data.Common程序集:System.Data(在 system.data.dll 中)
int Fill (
int startRecord,
int maxRecords,
... array&DataTable^&^ dataTables
public int Fill (
int startRecord,
int maxRecords,
DataTable[] dataTables
public function Fill (
startRecord : int,
maxRecords : int,
... dataTables : DataTable[]
startRecord要用记录和架构(如果必要)填充的 。 maxRecords要检索的最大记录数。 dataTables 值之一。
已在 DataTable 中成功添加或刷新的行数。这不包括受不返回行的语句影响的行。
方法使用关联的
属性所指定的 SELECT 语句从数据源中检索行。与 SELECT 语句关联的连接对象必须有效,但不需要将其打开。如果调用 Fill 之前连接已关闭,则将其打开以检索数据,然后再将其关闭。如果调用 Fill 之前连接已打开,它将保持打开状态。 然后,Fill 操作将行添加到
中的指定目标 DataTable 对象,如果 DataTable 对象不存在,则创建该对象。当创建 DataTable 对象时,Fill 操作通常只创建列名元数据。但是,如果
属性设置为 AddWithKey,则还会创建适当的主键和约束。 如果
对象在填充 DataTable 时遇到重复列,它将以“columnname1”、“columnname2”、“columnname3”这样依次排序的模式命名后面的列。如果传入数据包含未命名的列,它们将按“Column1”、“Column2”的模式放在 DataSet 中。 采用 DataTable 作为参数的 Fill 的重载仅获取第一个结果。使用以 DataSet 作为参数的 Fill 重载将获取多个结果。 您可以在同一个 DataTable 上多次使用 Fill 方法。如果主键存在,则传入行会与已有的匹配行合并。如果主键不存在,则传入行会追加到 DataTable 中。 如果 SelectCommand 返回 OUTER JOIN 的结果,则 DataAdapter 不为生成的 DataTable 设置
值。必须显式定义主键,确保正确地解析重复行。有关更多信息,请参见 。 注意 当处理返回多项结果的批处理 SQL 语句时,用于 OLE DB 的 .NET Framework 数据提供程序的
的实现只为第一项结果检索架构信息。若要为多项结果检索架构信息,请使用
设置为 AddWithKey 的 Fill。
给实现者的说明
方法的此重载是受保护的,供 .NET Framework 数据提供程序使用。
Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见。受以下版本支持:2.0受以下版本支持:2.0DataTable dt = Maticsoft.DBUtility.DbHelperOra.Query(QuerySql).Tables[0];
#region 创建新的DataTable
DataTable dtShow = new DataTable();
dtShow.Columns.Add("序号", Type.GetType("System.String"));
dtShow.Columns.Add("部门", Type.GetType("System.String"));
dtShow.Columns.Add("编号", Type.GetType("System.String"));
dtShow.Columns.Add("姓名", Type.GetType("System.String"));
dtShow.Columns.Add("职务", Type.GetType("System.String"));
dtShow.Columns.Add("期间", Type.GetType("System.String"));
dtShow.Columns.Add("开始日期", Type.GetType("System.String"));
dtShow.Columns.Add("结束日期", Type.GetType("System.String"));
//加载帐套的薪资项 转换成列
DataTable dtCover = GetCoverItemDT();
if (dtCover.Rows.Count & 0)
for (int i = 0; i & dtCover.Rows.C i++)
dtShow.Columns.Add(dtCover.Rows[i]["ITEMNAME"].ToString(), Type.GetType("System.String"));
#endregion
#region 插入员工薪资项数据到dtShow
int p = 1; //行号
for (int n = 0; n & dt.Rows.C n++)
string EMPLOYEEID = dt.Rows[n]["EMPLOYEEID"].ToString();
//判断是否最末一行
string CompareEMPLOYEEID = (n == dt.Rows.Count - 1) ? "000000" : dt.Rows[n + 1]["EMPLOYEEID"].ToString();
if (CompareEMPLOYEEID != EMPLOYEEID) //比较当前行与下行ID 不同ID 则添加本行数据
DataRow dr = dtShow.NewRow();
dr["序号"] =
dr["部门"] = dt.Rows[n]["EMPLOYDEP"];
dr["编号"] = dt.Rows[n]["EMPLOYEEID"];
dr["姓名"] = dt.Rows[n]["EMPLOYEENAME"];
dr["职务"] = dt.Rows[n]["POST"];
dr["期间"] = dt.Rows[n]["CYCLENAME"];
dr["开始日期"] = dt.Rows[n]["CYCLESTARTDATE"];
dr["结束日期"] = dt.Rows[n]["CYCLEENDDATE"];
for (int j = 0; j & dtShow.Columns.C j++)
DataRow[] dr1 = dt.Select("EMPLOYEEID='" + EMPLOYEEID + "' AND ITEMNAME='" + dtShow.Columns[j].ColumnName + "'");
if (dr1.Length & 0)
dr[dtShow.Columns[j].ColumnName] = dr1[0]["AMOUNT"].ToString();
dtShow.Rows.Add(dr);
#endregion
bootstrap对表格datatable的应用
datatables
vue2.0结合DataTable插件实现表格的动态刷新
DataTable在支持滚动时的实现方式与遗留问题
将数据表的纵向数据横向显示
在C#中进行数据纵向不定行转横向列,多条信息成一行,例如员工薪资信息
C# datatable过滤某一列的重复数据(相当于distinct)
SQL 将横向数据转为纵向记录
没有更多推荐了,C# CreateDataAdapter 创建 DbDataAdapter,以及用DataTable的Load方法获取数据
时间: 01:59:16
&&&& 阅读:950
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&ADO.NET中 有了DbConnection,就可用DbConnection的CreateCommand&创建DbCommand,BeginTransaction创建DbTransaction
可以十分方便的实现工厂模式,操作不同的数据库。
但是唯独DbDataAdapter这个重要的对象无法通过DbConnection或DbCommand来创建,也无法实例化,必须使用SqlDataReader这种明确的类来创建实例,导致 获取数据 的方法不能在基类实现
以下是两个解决办法:&
1。只有我们自己灵活一点,手动判断DbConnection的类型,并返回相应的DbDataAdapter,虽然比较笨,但是勉强能达到简化继承类的目的,代码如下:
private DbDataAdapter CreateDataAdapter()
if (conPrivate is System.Data.SqlClient.SqlConnection)
return new System.Data.SqlClient.SqlDataAdapter();
if (conPrivate is Sybase.Data.AseClient.AseConnection)
return new Sybase.Data.AseClient.AseDataAdapter();
if (conPrivate is MySql.Data.MySqlClient.MySqlConnection)
return new MySql.Data.MySqlClient.MySqlDataAdapter();
throw new NotImplementedException();
其中&conPrivate 是&DbConnection
2。换一个角度,发现DataTable有个Load方法可以使用IDataReader来获取数据,而IDataReader可以使用DbCommand创建,不会出现DbDataAdapter无法实例化的问题。这样便可在基类实现获取数据的方法。
需要注意的是,直接使用DataTable.Load(IDataReader dr)来获取数据的话,会带上各种限制(不能为空,自增列,只读列等),在代码中会很不方便。
不过我们知道,Fill方法内部,也是通过DbDataReader来实现填充数据的,为何同样是用DbDataReader,Fill方法出来的DataTable就没有任何限制呢?
&使用Reflector对Fill方法进行查看,发现使用以下代码即可,既能在基类中就实现获取数据的方法,并且不会带上Constraints
IDbCommand com = conPrivate.CreateCommand();
IDataReader dr = com.ExecuteReader();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.Tables.Add(dt);
ds.Load(dr, LoadOption.OverwriteChanges, dt);
ds.EnforceConstraints = false;
&标签:&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/xyz0835/p/3889167.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!}

我要回帖

更多关于 datatables排序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信