2013-06-23 45 views
0

查詢結果我有一個樂透抽籤方法應該找到購買的機票的數據庫中的中獎彩票。但我無法顯示查詢結果。 (我知道這是不是怎麼樂透真正起作用的,我會來隨機後來的數字:P)無法顯示使用cmd.ExecuteNonQuery在C#

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..."); 
     } 
    } 
} 
+2

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); } } 

然後,您可以通過訪問您的數據'ExecuteNonQuery'只能用於不返回值的'INSERT','DELETE','UDPATE'語句。對於'SELECT',使用'的ExecuteReader(),所以你其實可以讀**'找回了'SqlDataReader' **結果從查詢返回。 ADO.NET基礎101 –

回答

1

這是因爲你使用exectue非查詢。

要檢索的結果,你要麼需要使用SQLReader的或

我個人認爲使用DataAdapter的SqlDataAdapter的簡單:

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(); 
} 
+0

謝謝,我試圖檢索數據時出錯。 **名稱「T」不會在目前情況下存在** – PriceCheaperton

+0

這聽起來像被宣佈內部範圍的數據表,然後在一個outerscope訪問。 – SlitCanvas

+0

我看..虐待它有一個再去..感謝 – PriceCheaperton