Ich habe einen einfachen SQL-Befehl, der nicht in bestimmten geben Parameter funktionieren wird.
Zum Beispiel wenn TweetID = 59
und UserID = 1
wird es den Wert zurückgeben;
aber wenn TweetID = 8
und UserID = 1
wird es nicht den Wert zurückgeben.
Kann jemand den Grund dafür finden?Simple SQL-Befehl wird nicht an bestimmten Parametern arbeiten
public static int GetReTweetIdFromReTweetByUserIdAndTweetId(int TweetID,int UserID)
{
string sql = "SELECT [ReTweetID] FROM [ReTweet] WHERE [TweetID] = [@TID] AND [UserID] = [@UID]";
OleDbConnection conn = ConnectToDb();
OleDbCommand com = new OleDbCommand(sql, conn);
com.Parameters.Clear();
OleDbParameter objParamater;
objParamater = com.Parameters.Add("[@UID]", OleDbType.Integer);
objParamater.Direction = ParameterDirection.Input;
objParamater.Value = UserID;
objParamater = com.Parameters.Add("[@TID]", OleDbType.Integer);
objParamater.Direction = ParameterDirection.Input;
objParamater.Value = TweetID;
OleDbDataAdapter da = new OleDbDataAdapter(com);
DataTable dt = new DataTable();
int id=0;
try
{
conn.Open();
da.Fill(dt);
id = int.Parse(dt.Rows[0][0].ToString());
}
catch (Exception err)
{
throw err;
}
finally
{
da.Dispose();
dt.Dispose();
com.Dispose();
conn.Close();
conn.Dispose();
}
return id;
}
Off-Thema: in die [using-Anweisung] (http://www.dotnetperls.com/using) schauen. Es könnte Ihren Code viel aufräumen und den Aufwand für den Aufruf von 'Dispose()' auf 'IDisposable' Objekten ersparen. –
"Werfen Sie keinen Fehler" in Ihren catch-Block, da dies den Stacktrace zurücksetzt. Entweder einfach einen "Wurf" machen oder den Fangblock ganz loswerden, da Sie Ihre Zeit verschwenden. – user1666620
Wenn Sie das Skript direkt für die Datenbank ausführen, gibt es Ergebnisse zurück? – user1666620