2

私は次のような更新クエリを持っています:

 public void Update_Download(string _url){
            Data.Connect();
            using (Data.connexion)
            {

                string queryString = "update Fichier set Last_download=@last , Downloads_count= Downloads_count + 1  where Url = @url ";


                SqlCommand command = new SqlCommand(queryString, Data.connexion);
                command.Parameters.AddWithValue("@last", DateTime.Now);
                command.Parameters.AddWithValue("@url", _url);
                try
                {
                  SqlDataReader reader = command.ExecuteReader();
                 }
                catch { }

                }
         }


    }
}

文字列接続:

public static SqlConnection connexion;


        public static bool  Connect()
        {
                System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder();
                builder["Initial Catalog"] = "Upload";
                builder["Data Source"] = "bd";
                builder["integrated Security"] = true;
                string connexionString = builder.ConnectionString;
                connexion = new SqlConnection(connexionString);
                try { connexion.Open(); return true; }
                catch { return false; }

        }
        public static  void Disconnect()
        {
            if (connexion != null) connexion.Close();
            connexion = null;
        }

クエリは例外なく実行されていますが、テーブルは何も変更されていません。属性のタイプUrlは varchar(Max) で、DBMS はSql Serverです。

それで、問題は何ですか?クエリを修正するにはどうすればよいですか?

4

2 に答える 2

3

問題は、ExecuteReaderコマンドを使用していることです。これを次のように変更します。

command.ExecuteNonQuery();

さて、その上で、私はいくつかのアドバイスを提供したいと思います。現在のコードを次のように変更することを検討してください。

public void Update_Download(string _url)
{
    try
    {
        using (SqlConnection connexion = Data.Connect())
        {
            string queryString = "update Fichier set Last_download=@last , Downloads_count= Downloads_count + 1  where Url = @url ";

            using (SqlCommand command = new SqlCommand(queryString, connexion))
            {
                command.Parameters.AddWithValue("@last", DateTime.Now);
                command.Parameters.AddWithValue("@url", _url);
                command.ExecuteNonQuery();
            }
        }
    }
    catch (Exception ex)
    {
    }
}

その手順に従いたいのでData.Connect()、 a を返すことを検討してください。new SqlConnection(...)新しい接続が必要な場合は、new操作を使用して接続を取得し、SQL Server にプーリングを管理させます。接続を共有しないでください。

あなたが接続を共有しているかどうかはわかりません。これは単なる観察です。

于 2013-06-06T14:46:31.557 に答える