2014-03-04 234 views
0
protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\ExportPagetoPDFinASP.Net\App_Data\abcc.mdf;Integrated Security=True;User Instance=True"); 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.CommandText = "SELECT * FROM cookbook"; 
    cmd.Connection = con; 

cmd.ExecuteReader(); 

} 

无法获取数据。我不知道什么是错的。无法在asp.net中获取数据c#

回答

3

ExecuteReader会返回给你一个DataReader,你需要迭代它并从你的命令中获取行。

你也可以使用一个DataTable从DataReader的填补行,如:

DataTable dt = new DataTable(); 
dt.Load(cmd.ExecuteReader()); 

你可以有以下代码:

using (SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\ExportPagetoPDFinASP.Net\App_Data\abcc.mdf;Integrated Security=True;User Instance=True")) 
{ 
    con.Open(); 
    using (SqlCommand cmd = new SqlCommand()) 
    { 
     cmd.CommandText = "SELECT * FROM cookbook"; 
     cmd.Connection = con; 
     DataTable dt = new DataTable(); 
     dt.Load(cmd.ExecuteReader()); 
    } 
} 

考虑使用using statement您的网络连接和Command对象。

可以遍历行从DataReader的一样返回:

SqlDataReader reader = cmd.ExecuteReader(); 
while (reader.Read()) 
{ 
    Console.WriteLine(String.Format("{0}", reader[0])); //prints first column 
} 
0
public string Log(int userResult) 
    { 
     string result = "result saved"; 


     using (var conn = new SqlConnection("Data Source=XXXX;InitialCatalog=XXXX;Integrated Security=True")) 
     { 
      using (var cmd = new SqlCommand()) 
      { 
       cmd.CommandText = "dbo.setCalculatorResult"; 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Connection = conn; 
       cmd.Parameters.AddWithValue("RESULT", userResult); 

       if (conn.State != ConnectionState.Open) 
        conn.Open(); 

       int rowCount = cmd.ExecuteNonQuery(); 
       if (rowCount == 0) 
        result = "there was an error"; 
      } 
     } 
     return result; 
    } 

,也可以考虑使用特效