この問題は説明するのが難しいですが、ここでは説明します。私は、ローカルのSQLiteDatabaseからオンラインでMySQLデータベースにレコードを追加する関数を持っています。関数が最初に呼び出されてローカルデータが取得され、各行はアップロード関数に送られ、レコードがオンラインMySQLデータベースに追加されます。これらの関数が別の関数Aから呼び出されると、別の関数から呼び出されたときにうまく動作します。機能B重複レコードがデータベースに入力されます。データベース内で重複したレコードが原因でコード自体が繰り返されています
問題を解決するためのデバッグ中に、レコードを複製しているときにcmd.executeNonQuery()に行き、次の行に移動しますが、何も理由がないためcmd.executeNonQuery ()はレコードを複製します。コードは
private void uploadDatabase(string company, string oldCompany, string companyURL, string loginUsername, string oldUsername, string password, string type, string perform, string direction)
{
Boolean recordFound = false;
recordFound = checkRecordNotExist(company, loginUsername);
MySQLDBWork dbase = new MySQLDBWork();
try
{
dbase.openConnection();
if (perform == "insert" && !recordFound)
{
string query = "INSERT INTO `" + username + "` (pas_company, pas_companyURL, pas_username, pas_password, pas_type) "
+ "VALUES ('" + company + "', '" + companyURL + "', '" + loginUsername + "', '" + password + "', '" + type + "')";
Console.WriteLine("Query: " + query);
MySqlCommand cmd = new MySqlCommand(query, dbase.conn);
cmd.ExecuteNonQuery();
recordFound = true;
query = "";
company = "";
loginUsername = "";
cmd.Dispose();
}
if (perform == "delete")
{
string query = "DELETE FROM `" + username + "` WHERE pas_company='" + company + "' AND pas_username='" + loginUsername + "'";
dbase.performQuery(query);
}
}
catch (MySqlException ex)
{
Console.WriteLine("Adding Online Error: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("General Exception: " + ex.Message);
}
finally
{
dbase.closeConnection();
//dbase.conn.Dispose();
company = null;
loginUsername = null;
}
}
を下回っている文は== & &「を挿入」を実行する場合、問題は以内です!recordFound。
上記のコードが問題の解決に役立つかどうかは分かりませんが、これは関数bから呼び出されたときに間違っている関数ですが、関数Aからうまく機能します。ご協力いただきありがとうございます。
(1)最新のソースを使用していますか(再構築が役立つかもしれません)、(2)デバッグ、アプリケーションのリリースバージョンをデバッグしていますか? – Vlad