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()return anew SqlConnection(...)因为您想遵循该程序。当您需要一个新连接时,使用该new操作获取一个,并让 SQL Server 管理池。永远不要共享连接。

我不确定您是否共享连接,这只是一个观察。

于 2013-06-06T14:46:31.557 回答
1

是的,正如您在 MSDN 中看到的此链接:

http://msdn.microsoft.com/en-ca/library/system.data.sqlclient.sqlcommand(v=vs.80).aspx

ExecuteNonQuery :执行诸如 Transact-SQL INSERT、DELETE、UPDATE 和 SET 语句之类的命令。

所以尝试使用这种方法,这应该工作!

于 2013-06-06T14:52:37.023 回答