2014-10-08 32 views
-1

'對象'不包含'行'的定義,擴展 方法'行'接受類型'對象'的第一個參數可能是 發現你是否缺少using指令或程序集引用?'對象'不包含'行'的定義並且沒有擴展方法可以找到接受類型'對象'的第一個參數的'行'

的代碼下面給出:

public partial class Default3 : System.Web.UI.Page 
{ 
    static SqlConnection con = new SqlConnection(@"connectionString"); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    if (!this.IsPostBack) 
     { 
      ddlImg.DataSource = GetData("SELECT EmpID, EmpName FROM Tbl_Emp"); 
      ddlImg.DataTextField = "EmpName"; 
      ddlImg.DataValueField = "EmpID"; 
      ddlImg.DataBind(); 
     } 

    } 

    private object GetData(string query) 
    { 
     DataTable dt = new DataTable(); 
     string constr = ConfigurationManager.ConnectionStrings["tbFiles2ConnectionString"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(constr)) 
     { 
      using (SqlCommand cmd = new SqlCommand(query)) 
      { 
       using (SqlDataAdapter sda = new SqlDataAdapter()) 
       { 
        cmd.CommandType = CommandType.Text; 
        cmd.Connection = con; 
        sda.SelectCommand = cmd; 
        sda.Fill(dt); 
       } 
      } 
      return dt; 
     } 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     SqlCommand cmd = new SqlCommand(); 
     con.Open(); 
     cmd.Connection = con; 
     cmd.CommandText = ("INSERT INTO Tbl_Emp(EmpID, EmpName, EmpPic) VALUES('"+TextBox1.Text+"','"+TextBox2.Text+"','" + FileUpload1 + "')"); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 
    protected void Button2_Click(object sender, EventArgs e) 
    { 
     string id = ddlImg.SelectedItem.Value; 
     Image1.Visible = id != "0"; 
     if (id != "0") 
     { 
      byte[] bytes = (byte[])GetData("SELECT Data FROM Tbl_Emp WHERE Emp_ID =" + id).Rows[0]["Data"]; // Error popup here 
      string base64String = Convert.ToBase64String(bytes, 0, bytes.Length); 
      Image1.ImageUrl = "data:image/png;base64," + base64String; 
     } 
    } 
} 
+2

如果被拋出的錯誤?問題是什麼? – 2014-10-08 14:02:34

+0

「靜態」連接是一個非常糟糕的主意 – SLaks 2014-10-08 14:04:18

+0

您是否缺少使用指令或程序集引用?你有沒有檢查或做過任何研究? – 2014-10-08 14:04:27

回答

1

的問題是,GetData回報object它沒有Rows財產。出於這個原因,你得到的編譯器錯誤:

...GetData("SELECT Data FROM Tbl_Emp WHERE Emp_ID =" + id).Rows[0]... 

返回DataTable代替:

private DataTable GetData(string query) 
{ 
    DataTable dt = new DataTable(); 
    string constr = ConfigurationManager.ConnectionStrings["tbFiles2ConnectionString"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(constr)) 
    { 
     using (SqlCommand cmd = new SqlCommand(query)) 
     { 
      using (SqlDataAdapter sda = new SqlDataAdapter()) 
      { 
       cmd.CommandType = CommandType.Text; 
       cmd.Connection = con; 
       sda.SelectCommand = cmd; 
       sda.Fill(dt); 
      } 
     } 
    } 
    return dt; 
} 

請注意,您應該

1

更改getdata()函數簽名

private DataTable GetData(string query){ 

} 
相關問題