PDA

View Full Version : مشکل با دستور select در معماری سه لایه



ramin149
چهارشنبه 31 شهریور 1389, 18:58 عصر
من برای Select و insert از معماری سه لایه استفاده می کنم و قبلا با زبان vb کار می گردم و مشکلی برام نداشت با دستور زیر



Dim db As New DataAccessLayer
Dim dt As New DataTable
Function Sbimages() As DataTable
db.connect()
Dim q As String = "select * from bimages"
dt = db.doselect(q)
db.disconnect()
Return dt
End Function


ولی با استفده از سایت زیر
http://converter.telerik.com/
کد به زبان C تبدیل کردم ولی به من خطا می ده


DataAccessLayer db = new DataAccessLayer();
DataTable dt = new DataTable();
public string username;
public DataTable SwhereUsername()
{
db.Connect();
string q = @"select * from admin where username=N'" + username + "'";
dt = db.Doselect(q);
db.Disconnect();
return dt;
}


و خطا روی db است


Cannot implicitly convert type 'object' to 'system.data.datatable' . An explicit Conversion exists (are you missing a cast?)

اوبالیت به بو
چهارشنبه 31 شهریور 1389, 19:05 عصر
سلام

خروجي متد DoSelect چي هست؟ object؟ DataSet؟

ramin149
چهارشنبه 31 شهریور 1389, 19:06 عصر
در زبان vb


Public Function doselect(ByVal str As String)
com.CommandText = str
com.Connection = objcon
da.SelectCommand = com
da.Fill(dt)
Return (dt)
End Function


و در زبان C
که مشکل داره


public object Doselect(string str)
{
com.CommandText = str;
com.Connection = objcon;
da.SelectCommand = com;
da.Fill(dt);
return (dt);
}

اوبالیت به بو
چهارشنبه 31 شهریور 1389, 19:25 عصر
با تابع vb كاري ندارم. ولي C رو تغيير بديد:


public DataTable Doselect(string str)
{
com.CommandText = str;
com.Connection = objcon;
da.SelectCommand = com;
DataSet DS=new DataSet();

da.Fill(DS);
return (DS.Table[0]);

}