单击一个按钮即可进行多个查询

本文关键字:查询 按钮 一个 单击 | 更新日期: 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#语言已经进化,所以我建议使用新的语言结构(usingvar)所赋予的能力。

这里有一个改进的版本,假设您绑定到参数的值是有效的,它应该可以工作:

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();