我目前使用DataTable从数据库中获取结果,我可以在我的代码中使用它.
但是,Web上的许多示例都使用DataSet代替并通过collections方法访问表.
使用DataSet或DataTables作为SQL结果的存储方法是否有任何优势,性能明智或其他方面?
是否可以隐藏"显示条目"下拉列表,但将"搜索"框保留在DataTable中?我想在底部始终显示10行分页和搜索框,但不想显示"显示条目"下拉列表.
我有一个DataTable有四列,如
StudentID CourseID SubjectCode Marks
------------ ---------- ------------- --------
1 100 MT400 80
2 100 MT400 79
3 100 MT400 88
Run Code Online (Sandbox Code Playgroud)
这里我通过将此数据表作为XML表传递,将此Datatable插入到Sql server表中.
我只想将DataTable列名称"Marks"更改为"SubjectMarks",并将此DataTable作为XML表传递.
我知道如何将DataTable作为XML表传递.但我不知道,如何将DataTable列名"Marks"更改为"SubjectMarks".
我有:
DataTable Table = new DataTable;
SqlConnection = new System.Data.SqlClient.SqlConnection("Data Source=" + ServerName + ";Initial Catalog=" + DatabaseName + ";Integrated Security=SSPI; Connect Timeout=120");
SqlDataAdapter adapter = new SqlDataAdapter("Select * from " + TableName, Connection);
adapter.FillSchema(Table, SchemaType.Source);
adapter.Fill(Table);
DataColumn column = DataTable.Columns[0];
Run Code Online (Sandbox Code Playgroud)
我想做的是:
假设当前column.DataType.Name是"Double".我希望它成为"Int32".
我该如何实现这一目标?
如何检查数据行中是否存在列?
我正在构建数据表来组织一些我已经从数据库中撤回的数据.根据每行中的数据类型,我需要创建一个具有不同列的数据表.然后,稍后,我想检查并查看我正在查看的数据表是否有某个列.
我知道我可以捕获异常并以这种方式处理它,但我很好奇datarow对象上是否有属性或方法可以为我执行此操作?
这是我如何通过捕获异常来做到这一点:
public static String CheckEmptyDataRowItem(DataRow row, String rowName, String nullValue)
{
try
{
return row[rowName].ToString();
}
catch (System.ArgumentException)
{
return nullValue;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种简单的方法来克隆DataRow.有点像拍摄该行的快照并保存它.然后原始Row的值可以自由更改,但我们仍然有另一个保存的副本不会更改.这是正确的方法吗?
DataRow Source, Destination;
//Assume we create some columns and fill them with values
Destination.ItemArray = Source.ItemArray;
Run Code Online (Sandbox Code Playgroud)
这只是将Snapshot的ItemArray引用设置为指向Source中的那个或者它实际上是否单独创建一个副本?我应该这样做吗?
Destination.ItemArray = Source.ItemArray.Clone();
Run Code Online (Sandbox Code Playgroud)
编辑:我不认为第二个代码片段实际编译.
如何DataTable
在C#中导出到Excel?我正在使用Windows窗体.它DataTable
与DataGridView
控件相关联.我必须将记录导出DataTable
到Excel.
我在JSF 2应用程序中使用Primefaces.我有一个<p:dataTable>
,而不是选择行,我希望用户能够直接对各行执行各种操作.为此,我<p:commandLink>
在最后一栏中有几个.
我的问题:如何将行ID传递给命令链接启动的操作,以便我知道要对哪一行进行操作?我尝试使用<f:attribute>
:
<p:dataTable value="#{bean.items}" var="item">
...
<p:column>
<p:commandLink actionListener="#{bean.insert}" value="insert">
<f:attribute name="id" value="#{item.id}" />
</p:commandLink>
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
但它总是产生0 - 显然在f
呈现属性时行变量不可用(当我使用固定值时它可以工作).
有人有替代解决方案吗?
我知道我们可以通过一个简单的循环轻松地做到这一点,但我想说服这个LINQ/Predicate?
string[] columnNames = dt.Columns.?
or
string[] columnNames = from DataColumn dc in dt.Columns select dc.name;
Run Code Online (Sandbox Code Playgroud)