把数据放入datatable中之后,如何读取指定行列的数据呢?
我放的不是数据库中的数据,没有表头也不止一列,比如我想找第三行第四列的数据。
现在我已经写了代码如下:
try
{
string strConn;
strConn = @"Provider=MicrosoftJetOLEDB40;Data Source= C:\Users\Administrator\Desktop\cstestxls;Extended Properties='Excel 80;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConnOpen();
String sql = "SELECT FROM [Sheet1$]";
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet OleDsExcle = new DataSet();
OleDaExcelFill(OleDsExcle, "Sheet1");
DataTable dt = OleDsExcleTables[0];
//这里要怎么继续写下去呢
label1Text = ;
OleConnClose();
}
catch (Exception ex)
{
label1Text = exMessage;
}
假设你上图表格数据为 DataTable dt,列分别为AA,BB,CC,DD
var query = from p in dtAsEnumerable()
//分组
group p by new
{
t1 = pField<int>("AA")ToString()Substring(0, pField<int>("AA")ToString()Length - 2),
t2 = pField<double>("BB"),
t3 = pField<string>("CC")
} into g
select new
{
ColA = gKeyt1,
ColB = gKeyt2,
ColC = gKeyt3,
ColD = gSum(c => cField<int>("DD"))
};
//转datatable
DataTable dtNew = dtClone();
DataRow drNew;
foreach (var p in query)
{
drNew = dtNewNewRow();
drNew["AA"] = pColA;
drNew["BB"] = pColB;
drNew["CC"] = pColC;
drNew["DD"] = pColD;
dtNewRowsAdd(drNew);
}
dtNew 为最终结果
注:转换过程中要考虑空值的情况
select count() from table
c#几年不看了,具体语法忘记了
大概也就是connection,然后statement 然后执行sql 然后返回一个ResultSet 再取出结果集
DataTable dt = AuctionOrdersPayCarPrice(uid, payStatus, pageIndex, pageSize);
(此处空一行)
if (dtRowsCount > 0)
{
//新表
DataTable newDt = new DataTable();
List<string> listColums = new List<string>();
//复制表结够
newDt = dtClone();
(此处空一行)
//新表中的列数据类型为Decmail的改为string
foreach (DataColumn col in newDtColumns)
{
listColumsAdd(colColumnName);
if (colDataTypeFullName == "SystemDecimal")
{
colDataType = TypeGetType("SystemString");
}
}
(此处空一行)
foreach (DataRow row in dtRows)
{
DataRow newDtRow = newDtNewRow();
foreach(DataColumn column in dtColumns)
{
if (columnDataTypeFullName == "SystemDecimal")
{
newDtRow[columnColumnName] = (ConvertToDecimal(row[columnColumnName]) / 10000)ToString("c") + "万";
}
else
{
newDtRow[columnColumnName] = row[columnColumnName];
}
}
newDtRowsAdd(newDtRow);
}
(此处空三行)
var obj = new { state = true, message = newDt };
ResponseWrite(JsonConvertSerializeObject(obj));
}
else
{
var obj = new { state = false, message = "没有查询到信息" };
ResponseWrite(JsonConvertSerializeObject(obj));
}
扩展资料:
关于上述注意事项
DataTable中数据:ID NAME State1 A 12 B 03 C 0State数据列为int型,想让它在页面读取显示时,1显示为非工作日转工作日,0显示为工作日转非工作日。
详细原因:当在做列转换时
1,数据库中类型和要修改成的类型不一致。
2,遇到DataTable中有数据则无法进行数据转换的问题。
解决方法:如果直接修改当前datatable里制定列的数据会提示因为有数据所以不让修改,而通过if判断直接赋值又会提示数据类型不同而拒绝 *** 作,报错。
C#连接数据库,查询后怎么输出查询结果可以通过一下方式
1:输出的结果可以是集合对象
2:输出的结果可以是DataSet或者DataTable
下面的案例提供了两种方式:
方法返回的是集合对象,内部使用的是DataSet
public IList<Student> GetAllStudents1()
{
IList<Student> dataList = new List<Student>();
DataSet dataSet = new DataSet();// 声明并初始化DataSet
SqlDataAdapter dataAdapter; // 声明DataAdapter
using (SqlConnection conn = new SqlConnection(connString))
{
// 定义command对象
SqlCommand command = new SqlCommand(dboOwner + "usp_SelectStudentsAll", conn);
commandCommandType = CommandTypeStoredProcedure;
//Command定义带参数的SQL语句的参数
//commandParametersAdd("@stuID", SqlDbTypeInt);
//给输入参数赋值
//commandParameters["@stuID"]Value = 5;
connOpen();
// 初始化 DataAdapter
dataAdapter = new SqlDataAdapter(command);
// 填充 DataSet
dataAdapterFill(dataSet, "dataSetName");
// 处理数据集中的数据
foreach (DataRow row in dataSetTables[0]Rows)
{
Student model = new Student();
modelStuId = ConvertToInt32(row["stuID"]);
modelStuName = ConvertToString(row["stuName"]);
dataListAdd(model);
}
}
return dataList;
}
以上就是关于c#怎样读取DataTable中的数据全部的内容,包括:c#怎样读取DataTable中的数据、C#用LINQ *** 作Datatable数据库、求助,C#查询oracle数据库返回行数的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)