DataTable.Dispose()
的问题您好。
我遇到以下代码的问题,它会导致内存中出现问题。 问题是,不知道转向这个问题。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.IO;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Threading;
using System.Text.RegularExpressions;
using System.Globalization;
using System.Net;
using System.Runtime.Remoting;
using Microsoft.SqlServer;
using Microsoft.SqlServer.Server;
namespace Mirf
{
class Program
{
static void Main(string[] args)
{
SqlConnection Lig = new SqlConnection();
DataTable DataTab = new DataTable();
string str_ligacao_bd = "Data Source=.\\SQL2005;Database=Bd;Integrated Security=SSPI";
Lig = new SqlConnection(str_ligacao_bd);
Lig.Open();
//Efectua a intrução á tabela seleccionada base de dados
SqlCommand cmd = Lig.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM Tab";
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "tab");
DataTab = ds.Tables["tab"];
cmd.Dispose();
da.Dispose();
ds.Dispose();
Lig.Close();
foreach (DataColumn d in DataTab.Columns)
{
string linha = d.ColumnName;
if (linha != "Tid")
{
linha = "[" + linha + "]=1";
int sum = (int)(DataTab.Compute("COUNT(TID)",linha));
}
}
}
}
}
他的代码是。
在几列中计算1的值的最佳方法。
在某些情况下,需要组合两列或更多列。
由于
答案 0 :(得分:1)
我不确定你到底想要实现什么,但看起来你真的应该使用SQL来直接得到答案,而不是将整个表读入本地内存然后在本地计算。
答案 1 :(得分:0)
答案 2 :(得分:0)
考虑到您在另一条评论中说数据是在文本文件中(尽管您的代码表明它在SQL Server数据库中),我建议使用Linq to Entities。
这是一些链接。
http://msdn.microsoft.com/en-us/library/bb386992.aspx
http://dotnetaddict.dotnetdevelopersjournal.com/adoef_vs_linqsql.htm
http://mark-dot-net.blogspot.com/2008/03/selecting-custom-objects-from-linq.html
您必须编写代码来序列化和反序列化您要针对内存中C#对象构建查询的“行”数据。