How can I save the results of an SQL query into an array?
I want to use the values (located in col1 and col2) in an IF statement, leading to my thinking of saving them in an array.
var con = new SqlConnection("Data Source=local;Initial Catalog=Test;Integrated Security=True"); using (con) using (var command = new SqlCommand("SELECT col1,col2 FROM some table", con)) { con.Open(); command.ExecuteNonQuery(); }
<? php mysql_connect("mysql153.secureserver.net","java2s","password"); mysql_select_db("java2s"); $query = "SELECT * FROM Employee"; $result = mysql_query($query); while ($row = mysql_fetch_array($result,MYSQL_NUM)) { $name = $row[1]; $developerid = $row[0]; echo "Product: $name ($developerid) <br />"; } ?>
Define arrays as SQL variables. Use the ARRAY_AGG built-in function in a cursor declaration, to assign the rows of a single-column result table to elements of an array. Use the cursor to retrieve the array into an SQL out parameter. Use an array constructor to initialize an array.
Normally i use a class for this:
public class ClassName { public string Col1 { get; set; } public int Col2 { get; set; } }
Now you can use a loop to fill a list and ToArray
if you really need an array:
ClassName[] allRecords = null; string sql = @"SELECT col1,col2 FROM some table"; using (var command = new SqlCommand(sql, con)) { con.Open(); using (var reader = command.ExecuteReader()) { var list = new List<ClassName>(); while (reader.Read()) list.Add(new ClassName { Col1 = reader.GetString(0), Col2 = reader.GetInt32(1) }); allRecords = list.ToArray(); } }
Note that i've presumed that the first column is a string
and the second an integer
. Just to demonstrate that C# is typesafe and how you use the DataReader.GetXY
methods.
Instead of any Array
you can load your data in DataTable
like:
using System.Data; DataTable dt = new DataTable(); using (var con = new SqlConnection("Data Source=local;Initial Catalog=Test;Integrated Security=True")) { using (var command = new SqlCommand("SELECT col1,col2" + { con.Open(); using (SqlDataReader dr = command.ExecuteReader()) { dt.Load(dr); } } }
You can also use SqlDataAdapater
to fill your DataTable like
SqlDataAdapter da = new SqlDataAdapter(command); da.Fill(dt);
Later you can iterate each row and compare like:
foreach (DataRow dr in dt.Rows) { if (dr.Field<string>("col1") == "yourvalue") //your condition { } }
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