1
我正在做一個C#應用程序,即時通訊相當確定我的代碼是正確的,但即時通訊與SQL連接新。我的問題是,我有2個對象,其中A包含B並且正在執行查詢以獲取所有A行將它們添加到列表中,並且對於每一行我去搜索它的B並將它們添加到A.bList。在B查詢中,結果是A>。>這是怎麼回事?DataTable返回舊結果
如果有幫助。這兩個班是業主和狗 所以班主(Dono)有一個狗(曹)對象的列表。
public class dal
{
#region Membros
private SqlConnection cs = new SqlConnection("Data Source=.;Initial Catalog=canil;Integrated Security=True");
private SqlDataAdapter da = new SqlDataAdapter();
private SqlCommand cmd = new SqlCommand();
private DataTable dt = new DataTable();
#endregion
#region MembrosGetSetPrivados
private bool setCommand(string stringSQL)
{
try
{
cs.Open(); // Abre a Ligação
// 1. Instancia o novo comando com a query e a connecção
cmd = new SqlCommand(stringSQL, cs);
// 2. Executa o comando
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
return false;
}
}
finally
{
//Fecha a ligação
if (cs != null)
cs.Close();
}
return true;
}
private DataTable getCommand(string stringSQL)
{
da.SelectCommand = new SqlCommand(stringSQL, cs);
da.Fill(dt);
return dt;
}
#endregion
#region MembrosGetSetPublicos
public void getDonos(List<Dono> lista)
{
DataTable resultados = getCommand("SELECT * FROM dono;");
foreach(DataRow dr in resultados.Rows)
{
int idDono, contacto;
string nome,morada;
idDono = Convert.ToInt32(dr[0]);
contacto = Convert.ToInt32(dr[1]);
nome = dr[2].ToString();
morada = dr[3].ToString();
Dono dono = new Dono(idDono, contacto, nome, morada);
getCaesDono(dono);
lista.Add(dono);
}
}
public void getCaesDono(Dono dono)
{
DataTable r = getCommand("SELECT cao.idCao,cao.idRaca,cao.chip,cao.peso,cao.nome,raca.descricao FROM cao,dono,raca WHERE cao.idCao = dono.idCao AND cao.idRaca = raca.idRaca AND dono.idDono = 1");
foreach(DataRow linha in r.Rows)
{
int idCao = Convert.ToInt32(linha[0]);
int idRaca = Convert.ToInt32(linha[1]);
int chip = Convert.ToInt32(linha[2]);
double peso = Convert.ToDouble(linha[3]);
Raca raca = new Raca(idRaca,linha[5].ToString());
string nome = linha[4].ToString();
dono.caes.Add(new Cao(idCao, idRaca, chip, peso, raca, nome));
}
}
嗯,這可以解決我的問題,但我對此不以爲然。
Dono dono = new Dono(idDono, contacto, nome, morada);
dal d = new dal();
d.getCaesDono(dono);
所以很明顯,問題是SqlDataAdapter接縫,以保持最後的結果。我似乎無法找到任何方法來清除它或什麼。我應該使用另一個SqlDataAdapter嗎?我也認爲這不是答案。任何人都可以指路嗎?
嘗試檢查是否已啓用緩存某處 –
呵呵,是啊,但還是不幫我以任何方式,形狀或形式,所以...是啊。 – Vcoder
我搜索了C#+ SQL +緩存+禁用,但沒有線索。你能指點我嗎? – Vcoder