В Python (и почти любом другом языке программирования) числа хранятся в виде двоичных чисел. Таким образом, понятие «ведущих нулей» не имеет смысла: для компьютера 123
и 000123
будут храниться точно так же. (И действительно, математик сказал бы, что они представляют одно и то же значение.)
Если вам нужны начальные нули, вы должны сохранить значение в виде строки. Просто удалите вызов int
из функции numb
.
Вы используете метод NextResult в устройстве чтения данных для навигации с несколькими результатами из запроса.
Чтобы перебрать все данные, вы должны сделать что-то вроде этого:
var moreResults = true;
while (moreResults)
{
while (reader.Read())
{
...
}
moreResults = reader.NextResult();
}
Таким образом, с этим в качестве фона и предполагая, что главный набор результатов на первом месте, заполнение главных и подробных объектов может быть сделано следующим образом :
Во-первых,создайте словарь основных записей:
var masters = new Dictionary<int, Master>();
var idOrdinal = reader.GetOrdinal("id");
while (reader.Read())
{
var id = reader.GetInt32(idOrdinal);
masters.Add(id, new Master{Id=id, ....});
}
Далее перейдите к подробным записям и добавьте их к соответствующему основному устройству:
reader.NextResult();
var masterIdOrdinal = reader.GetOrdinal("masterId");
while (reader.Read())
{
var masterId = reader.GetInt32(masterIdOrdinal);
var master = masters[masterId];
master.Details.Add(new Detail{....});
}
Очевидно, что вы должны заменить имена столбцов тем, что есть в ваших данных, а также обеспечить полную инициализацию объектов Master и Detail. If the detail resultset is sorted on master id, the last loop could be optimized to only lookup each master once from the dictionary. If the resultsets are small though, the gain would not be that huge.
... один выбор записей из основной таблицы и прочее из дочерней таблицы .in c # code я хочу получить всю эту запись и поставить all this data in one object...
Peter's solution works to solve the basic problem of retrieving multiple results with a single DataReader
. However, If you want to save your data to an object which replicates the relationship between the Master-Details tables, you should be using a DataSet
instead.
DataSets can contain multiple DataTable
s and provide full support for inherent relationships between the tables by allowing creation of DataRelation
s between the tables. Then you can get related records for each scenario by calling GetChildRows()
or GetParentRows()
from the Master or Details tables respectively.
There are probably many samples online that illustrate how to do this. Here's one discussion thread from my Group where I have listed the steps and provided some code to demonstrate the procedure.