我有这样的更新查询:
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
。
那么问题是什么?我该如何更正我的查询?
答案 0 :(得分: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()
返回new SqlConnection(...)
因为您想要遵循该程序。当您需要新连接时,使用new
操作获取一个连接,并让SQL Server管理池。 永远不要分享关系。
我不确定你正在分享连接,这只是一个观察。
答案 1 :(得分:1)
是的,正如您在MSDN中可以在此链接中看到的那样:
http://msdn.microsoft.com/en-ca/library/system.data.sqlclient.sqlcommand(v=vs.80).aspx
ExecuteNonQuery:执行Transact-SQL INSERT,DELETE,UPDATE和SET语句等命令。
所以尝试使用这种方法,这应该有效!