A piggy bank of commands, fixes, succinct reviews, some mini articles and technical opinions from a (mostly) Perl developer.

C# SQL database connections

One way to do it, building the SQL code by inserting parameters:

//get db connection to copy from
MySqlConnection sourceDbConn = getConnection(db);
sourceDbConn.Open();
try
{
System.Data.DataSet ds = new System.Data.DataSet();
MySqlDataAdapter da;
MySqlCommandBuilder cb;

da = new MySqlDataAdapter("SELECT id FROM page where pageType = '" + pageType + "'", sourceDbConn);
cb = new MySqlCommandBuilder(da);
ds.DataSetName = "pageIds";
da.Fill(ds);
foreach (DataTable thisTable in ds.Tables)
{
foreach (DataRow row in thisTable.Rows)
{
idsArray[i++] = Int32.Parse(row["id"].ToString());
}
}
return idsArray;
}
catch
{
throw new Exception("Failed to get list of page to publish");
}
finally
{
sourceDbConn.Close();
}
}


Another way to do it, with bound parameters:

// get feed changes - picking up all data required to create new feeds

MySqlCommand getFeeds = new MySqlCommand("select id, type, title, maxresults, minrelevance, mindate from feeds where client_id = ?client_id and updated_date > ?max_updated_date", editorialConn);
getFeeds.Parameters.AddWithValue("?client_id", selected_staging_client_id);
getFeeds.Parameters.AddWithValue("?max_updated_date", PublishChangesSince);
MySqlDataReader getFeedsRdr = getFeeds.ExecuteReader();

while (getFeedsRdr.Read())
{
Int32 FeedID = getFeedsRdr.GetInt32(0);
String FeedType = getFeedsRdr.GetString(1);
String FeedTitle = getFeedsRdr.GetString(2);
Int32 FeedMaxResults = getFeedsRdr.GetInt32(3);
float FeedMinRelevance = getFeedsRdr.GetFloat(4);
DateTime FeedMinDate = getFeedsRdr.GetDateTime(5);
}
getFeedsRdr.Close();