Instead of calling ExecuteScalar you should open a DataReader and populate a DataTable.
private void button1_Click(object sender, EventArgs e)
{
const string connStr = "Data Source=apex2006sql;Initial Catalog=Leather;Integrated Security=True;";
const string query = "Select * From Invoice Where InvNumber = @InvNumber";
using (DataTable dt = new DataTable())
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(query, conn))
{
cmd.Parameters.Add(new SqlParameter("@InvNumber", 1100));
using (SqlDataReader dr = cmd.ExecuteReader())
{
dt.Load(dr);
}
}
conn.Close();
}
if (dt.Rows.Count != 1)
throw new Exception("Row not found");
DataRow row = dt.Rows[0];
string invNumber = Convert.ToString(row["InvNumber"]);
string custName = Convert.ToString(row["CustomerName"]);
System.Diagnostics.Debugger.Break();
}
}
Reputation Points: 1749
Solved Threads: 735
Senior Poster
Offline 3,948 posts
since Feb 2009