单击一个按钮即可进行多个查询
本文关键字:查询 按钮 一个 单击 | 更新日期: 2023-09-27 18:00:37
我想在一次按钮单击中执行两个查询。我试过string query="第一个查询";query+="第二次查询";但这并没有起到作用,这表明了错误。
我现在已经创建了两个独立的连接,如下所示:
try
{
SqlConnection conn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringDatabase"].ConnectionString);
//open connection with database
conn1.Open();
//query to select all users with teh given username
SqlCommand com1 = new SqlCommand("insert into artikulli (tema,abstrakti, kategoria_id, keywords ) values (@tema, @abstrakti, @kategoria, @keywords)", conn1);
// comand.Parameters.AddWithValue("@id", iD);
com1.Parameters.AddWithValue("@tema", InputTitle.Value);
com1.Parameters.AddWithValue("@abstrakti", TextareaAbstract.Value);
com1.Parameters.AddWithValue("@kategoria", DropdownCategory.Value);
com1.Parameters.AddWithValue("@keywords", InputTags.Value);
//execute queries
com1.ExecuteNonQuery();
conn1.Close();
if (FileUploadArtikull.HasFile)
{
int filesize = FileUploadArtikull.PostedFile.ContentLength;
if (filesize > 4194304)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "alert('Maximumi i madhesise eshte 4MB');", true);
}
else
{
string filename = "artikuj/" + Path.GetFileName(FileUploadArtikull.PostedFile.FileName);
SqlConnection conn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringDatabase"].ConnectionString);
SqlCommand com2 = new SqlCommand("insert into artikulli(path) values ('" + filename + "')", conn2);
//open connection with database
conn2.Open();
com2.ExecuteNonQuery();
FileUploadArtikull.SaveAs(Server.MapPath("~/artikuj''" + FileUploadArtikull.FileName));
Response.Redirect("dashboard.aspx");
}
}
else
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "popup", "alert('Ju nuk keni perzgjedhur asnje file');", true);
}
}
但问题是,只执行第二个查询,第一个查询在数据库中保存为null
在您的情况下,没有理由打开两个连接。此外,C#语言已经进化,所以我建议使用新的语言结构(using
,var
)所赋予的能力。
这里有一个改进的版本,假设您绑定到参数的值是有效的,它应该可以工作:
try
{
using(var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringDatabase"].ConnectionString))
{
//open connection with database
connection.Open();
//query to select all users with teh given username
using(var command1 = new SqlCommand("insert into artikulli (tema,abstrakti, kategoria_id, keywords ) values (@tema, @abstrakti, @kategoria, @keywords)", connection))
{
command1.Parameters.AddWithValue("@tema", InputTitle.Value);
command1.Parameters.AddWithValue("@abstrakti", TextareaAbstract.Value);
command1.Parameters.AddWithValue("@kategoria", DropdownCategory.Value);
command1.Parameters.AddWithValue("@keywords", InputTags.Value);
//execute first query
command1.ExecuteNonQuery();
}
//build second query
string filename = "artikuj/" + Path.GetFileName(FileUploadArtikull.PostedFile.FileName);
using(SqlCommand command2 = new SqlCommand("insert into artikulli(path) values (@filename)", connection))
{
//add parameters
command2.Parameters.AddWithValue("@filename", filename);
//execute second query
command2.ExecuteNonQuery();
}
}
}
//TODO: add some exception handling
//simply wrapping code in a try block has no effect without a catch/finally
尝试以下代码,无需打开两次连接
string query1 = "insert into artikulli (tema,abstrakti, kategoria_id, keywords ) values (@tema, @abstrakti, @kategoria, @keywords)";
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringDatabase"].ConnectionString);
SqlCommand com1= new SqlCommand(query1, conn);
com1.Parameters.AddWithValue("@tema", InputTitle.Value);
com1.Parameters.AddWithValue("@abstrakti", TextareaAbstract.Value);
com1.Parameters.AddWithValue("@kategoria", DropdownCategory.Value);
com1.Parameters.AddWithValue("@keywords", InputTags.Value);
string query2 = "insert into artikulli(path) values ('" + filename + "')", conn);
comm.ExecuteNonQuery();
comm.CommandText = query2;
comm.ExecuteScalar();