I am querying a database table and performing a calculation in each row returned. I'd like to put the result of this calculation right back in the same table, but I'm unsure of how to do this properly. The table is very large - 100,000 - 1,000,000 rows - so I can't bring the table local, it must stay on the server. Here is what I'm currently doing:
OleDbConnection accessConnect = new OleDbConnection()
{
try
{
accessConnect.Open();//Ope
n the data connection
OleDbDataReader tableReader = (new OleDbCommand(sqlQuery, accessConnect)).ExecuteRea
der();
while (tableReader.Read())//true
if there are more rows; otherwise, false
{
alpha = Convert.ToDouble(tableRead
er.GetValu
e(0));
beta = Convert.ToDouble(tableRead
er.GetValu
e(1));
distribution = CalcUtility.BetaCumulative
Distributi
on(alpha, beta);
}
.............
I need to use the "distribution" value in another query against the same database, so I'm thinking the best way to do this would be to add a "DISTRUBUTION" column to the table I'm querying and adding the "distribution" value. Would I add this data as soon as it is calculated, i.e.
SqlConnection custConn = new SqlConnection(...);
custConn.Open();
SqlCommand sqlCmd = new SqlCommand();
SqlUpdateCommand1.Connecti
on = custConn;
SqlUpdateCommand1.CommandT
ext="ALTER
TABLE table ADD COLUMN DISTRIBUTION Double;
SqlUpdateCommand1.ExecuteN
onQuery();
using (OleDbConnection accessConnect = new OleDbConnection())
{
try
{
accessConnect.Open();//Ope
n the data connection
OleDbDataReader tableReader = (new OleDbCommand(sqlQuery, accessConnect)).ExecuteRea
der();
while (tableReader.Read())//true
if there are more rows; otherwise, false
{
alpha = Convert.ToDouble(tableRead
er.GetValu
e(0));
beta = Convert.ToDouble(tableRead
er.GetValu
e(1));
distribution = CalcUtility.BetaCumulative
Distributi
on(alpha, beta);
SqlUpdateCommand1.CommandT
ext="UPDAT
E table SET DISTRIBUTION =" + distribution.ToString() + "' WHERE stuff;"
SqlUpdateCommand1.ExecuteN
onQuery();
}
................
These seems pretty clunky, but I think it would work. I think the best method would be to create a dataset based on the query, calculate, add, and fill the column, and then update the server database with the dataset. The problem is that there is too much data, so filling a local dataset isn't an option. Is there a way I could add the "distribution" column in bulk, once all distrubution values are calculated?
Thanks in advance for the help!!
Start Free Trial