I seem to be getting this problem only after I've changed my working code to use a dataview as opposed to textboxes to display a single row of data.
I have the following:
static SqlConnection dbConnection = new SqlConnection
(DBConnection.DBConnection.connectionString);
SqlDataAdapter holdone = new SqlDataAdapter(getCommand, dbConnection);
DataSet holdall = new DataSet();
DataSet updateall = new DataSet();
DataTable invoiceTable = new DataTable();
DataView invoiceView = new DataView();
which is used by
public void GetOne(/* connectionString, string invref, string tableref*/)
{
getCommand = "select *redacted* from " + tableref +
"where *redacted* = " + invref;
using (SqlConnection dbConnection = new SqlConnection
(DBConnection.DBConnection.connectionString))
{
dbConnection.Open();
holdone.Fill(holdall);
invoiceTable = holdall.Tables[0];
dbConnection.Close();
}
DataRowView rowView = invoiceView.AddNew();
rowView["*redacted*"] = invoiceTable;
rowView.EndEdit();
}
The error reports holdone.fill(holdall)
as the offending line, however I am unsure as to why, as I'm not using SQLCommand
as a parameter, rather a parameter of SQLDataAdapter
.
I'm struggling to see where I've gone wrong?
The problem is that you do set the SqlDataAdapter
's select command string to the current value of getCommand
in this line:
SqlDataAdapter holdone = new SqlDataAdapter(getCommand, dbConnection);
However, as strings are not really pointers, changing getCommand
afterwords will not change the select command of the SqlDataAdapter
.
What you'd need to do is:
public void GetOne(/* connectionString, string invref, string tableref*/)
{
getCommand = "select *redacted* from " + tableref + "where *redacted* = " + invref;
using (SqlConnection dbConnection = new SqlConnection(DBConnection.DBConnection.connectionString))
{
dbConnection.Open();
holdone.SelectCommand = new SqlCommand(getCommand, dbConnection);
holdone.Fill(holdall);
invoiceTable = holdall.Tables[0];
//dbConnection.Close(); // This line is unnecessary, as the connection will be closed by `using`
}
DataRowView rowView = invoiceView.AddNew();
rowView["*redacted*"] = invoiceTable;
rowView.EndEdit();
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With