Невозможно отобразить результаты запроса, используя cmd.ExecuteNonQuery в C#
У меня есть метод лотереи, который должен найти выигрышный билет из базы данных купленных билетов. Но я не могу отобразить результаты запроса. (Я знаю, что это не так, как работает Лото, я подойду к рандомизации чисел позже: P)
draw.aspx.cs
public void LottoDraw(object sender, EventArgs e)
{
var connectionstring = "Server=C;Database=lotto;User Id=lottoadmin;Password=password;";
using (var con = new SqlConnection(connectionstring)) // Create connection with automatic disposal
{
con.Open();
using (var tran = con.BeginTransaction()) // Open a transaction
{
// Create command with parameters
string sql =
"SELECT TOP 1 * FROM tblLotto ORDER BY NEWID()";
var cmd = new SqlCommand(sql, con);
cmd.Transaction = tran;
cmd.ExecuteNonQuery(); // Execute the query
tran.Commit(); // commit transaction
Response.Write("<br />");
Response.Write("<br />");
Response.Write("end...");
}
}
}
1 ответ
Решение
Это потому, что вы используете exectue без запроса.
Для получения результатов вам необходимо использовать SQLReader или SqlDataAdapter.
Лично мне проще использовать DataAdapter:
DataTable t = new DataTable();
using (SqlConnection c = new SqlConnection(DataConnectionString))
{
c.Open();
// Create new DataAdapter
using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM EmployeeIDs", c))
{
// Use DataAdapter to fill DataTable
a.Fill(t);
}
}
Затем вы можете получить доступ к своим данным:
if(t.Rows.Count == 1){
String val0 = t.Rows[0]["VAL0"].ToString();
String val1 = t.Rows[0]["VAL1"].ToString();
String val2 = t.Rows[0]["VAL2"].ToString();
String val3 = t.Rows[0]["VAL3"].ToString();
String val4 = t.Rows[0]["VAL4"].ToString();
String val5 = t.Rows[0]["VAL5"].ToString();
}