Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计数,然后插入else更新_C#_Asp.net_Sql - Fatal编程技术网

C# 计数,然后插入else更新

C# 计数,然后插入else更新,c#,asp.net,sql,C#,Asp.net,Sql,我有下面的代码,我正在尝试进行计数,如果(计数)=0,则插入else更新。我似乎无法找出问题所在。如果查询完成,则该页应转到下一页,但该页仅重新加载,并且未插入或更新任何数据。此操作应在我按下按钮时执行。您能帮助我吗?我以前问过,但没有回答。我现在自己试过,但似乎看不出有什么问题。抱歉重复 string ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (string.

我有下面的代码,我正在尝试进行计数,如果(计数)=0,则插入else更新。我似乎无法找出问题所在。如果查询完成,则该页应转到下一页,但该页仅重新加载,并且未插入或更新任何数据。此操作应在我按下按钮时执行。您能帮助我吗?我以前问过,但没有回答。我现在自己试过,但似乎看不出有什么问题。抱歉重复

string ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            if (string.IsNullOrEmpty(ip))
            {
                ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            }


            String id_sesiune;
            id_sesiune = Session.SessionID;

            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["chestionar"].ConnectionString);
            con.Open();
            SqlCommand cmd1 = new SqlCommand("SELECT count(*) from Raspunsuri where id_intrebare=2",con);

            int read = Convert.ToInt16(cmd1.ExecuteScalar());


            if (read == 0)
            {
                SqlCommand cmd = new SqlCommand("INSERT INTO Raspunsuri Values(@raspuns,@cnp,@data,'2',@ip,@idsesiune)", con);
                cmd.Parameters.AddWithValue("@cnp", Session["sesiune_cnp"]);
                cmd.Parameters.AddWithValue("@raspuns", textbox2.Text);
                cmd.Parameters.AddWithValue("@data", DateTime.Now.ToLocalTime());
                cmd.Parameters.AddWithValue("@ip", ip);
                cmd.Parameters.AddWithValue("@idsesiune", id_sesiune);

                try
                {
                    con.Open();
                    cmd.ExecuteNonQuery();
                    Response.Redirect("User3.aspx");
                }

                catch (Exception ex)
                {
                    Console.WriteLine("Error:" + ex);
                }
                finally
                {
                    con.Close();
                }


            }

            else
            {

                SqlCommand cmd = new SqlCommand("UPDATE Raspunsuri SET raspuns=@raspuns,cod_numeric_personal=@cnp,data_raspuns=@data,id_intrebare=2,ip_user=@ip,id_sesiune=@idsesiune WHERE id_intrebare=2", con);
                cmd.Parameters.AddWithValue("@cnp", Session["sesiune_cnp"]);
                cmd.Parameters.AddWithValue("@raspuns", textbox2.Text);
                cmd.Parameters.AddWithValue("@data", DateTime.Now.ToLocalTime());
                cmd.Parameters.AddWithValue("@ip", ip);
                cmd.Parameters.AddWithValue("@idsesiune", id_sesiune);

                try
                {
                    con.Open();
                    cmd.ExecuteNonQuery();
                    Response.Redirect("User3.aspx");
                }

                catch (Exception ex)
                {
                    Console.WriteLine("Error:" + ex);
                }
                finally
                {
                    con.Close();
                }

            }

当我遇到这种情况时,我将返回到存储过程

创建过程UpsertRasPunsuri(@keyID int、@cnp int、@raspuns nvarchar(30),
@数据smalldatetime,@ip nvarchar(30),@idsesiune int)
作为
开始
声明@cnt int
从Raspunsuri中选择@cnt=count(*),其中id\u intrebare=@keyID
如果@cnt=0
插入Raspunsuri值(@raspuns、@cnp、@data、2、@ip、@idsesune)
其他的
更新Raspunsuri集
raspuns=@raspuns,cod\u numeric\u personal=@cnp,data\u raspuns=@data,
id_intrebare=2,ip_user=@ip,id_sesiune=@idsesune
其中id_intrebare=@keyID
结束
现在,您的代码以这种方式简化

试试看
{
SqlConnection con=新的SqlConnection(ConfigurationManager.ConnectionString[“chestionar”].ConnectionString);
con.Open();
SqlCommand cmd=新的SqlCommand(“UpsertRasPunsuri”,con);
cmd.CommandType=CommandType.storedProcess;
cmd.Parameters.AddWithValue(“@keyID”,2);
cmd.Parameters.AddWithValue(“@cnp”,Session[“sesiune_cnp]”);
cmd.Parameters.AddWithValue(“@raspuns”,textbox2.Text);
cmd.Parameters.AddWithValue(“@data”,DateTime.Now.ToLocalTime());
cmd.Parameters.AddWithValue(“@ip”,ip);
cmd.Parameters.AddWithValue(“@idsesune”,id_sesiune);
con.Open();
cmd.ExecuteNonQuery();
重定向(“User3.aspx”);
} 
捕获(例外情况除外)
{ 
Console.WriteLine(“错误:+ex”);
} 
最后
{ 
con.Close();
} 
当然,我在这里对您的表格、列类型和长度做了很多假设。

然而,这将相对容易适应。现在,如果从VS或SSMS运行存储过程,则可以排除数据访问代码中的错误

当我陷入这种情况时,我将恢复到存储过程

创建过程UpsertRasPunsuri(@keyID int、@cnp int、@raspuns nvarchar(30),
@数据smalldatetime,@ip nvarchar(30),@idsesiune int)
作为
开始
声明@cnt int
从Raspunsuri中选择@cnt=count(*),其中id\u intrebare=@keyID
如果@cnt=0
插入Raspunsuri值(@raspuns、@cnp、@data、2、@ip、@idsesune)
其他的
更新Raspunsuri集
raspuns=@raspuns,cod\u numeric\u personal=@cnp,data\u raspuns=@data,
id_intrebare=2,ip_user=@ip,id_sesiune=@idsesune
其中id_intrebare=@keyID
结束
现在,您的代码以这种方式简化

试试看
{
SqlConnection con=新的SqlConnection(ConfigurationManager.ConnectionString[“chestionar”].ConnectionString);
con.Open();
SqlCommand cmd=新的SqlCommand(“UpsertRasPunsuri”,con);
cmd.CommandType=CommandType.storedProcess;
cmd.Parameters.AddWithValue(“@keyID”,2);
cmd.Parameters.AddWithValue(“@cnp”,Session[“sesiune_cnp]”);
cmd.Parameters.AddWithValue(“@raspuns”,textbox2.Text);
cmd.Parameters.AddWithValue(“@data”,DateTime.Now.ToLocalTime());
cmd.Parameters.AddWithValue(“@ip”,ip);
cmd.Parameters.AddWithValue(“@idsesune”,id_sesiune);
con.Open();
cmd.ExecuteNonQuery();
重定向(“User3.aspx”);
} 
捕获(例外情况除外)
{ 
Console.WriteLine(“错误:+ex”);
} 
最后
{ 
con.Close();
} 
当然,我在这里对您的表格、列类型和长度做了很多假设。

然而,这将相对容易适应。现在,如果从VS或SSMS运行存储过程,则可以排除数据访问代码中的错误

有例外吗?
从Raspunsuri中选择count(*),其中id\u intrebare=2
是否返回任何行?如果不返回,我希望执行插入操作,否则更新..如果没有行,返回并进入更新部分。它不会抛出错误,但不会插入错误和数据。您的问题不清楚,是否已将此代码放入按钮单击处理程序中?SELECT查询返回什么,是否有异常/etc?是的..我输入了按钮事件,没有异常抛出..有异常吗?
从Raspunsuri中选择count(*),其中id\u intrebare=2
是否返回任何行?如果不返回,我希望执行插入操作,否则更新..如果没有行,返回并进入更新部分。它不会抛出错误,但不会插入错误和数据。您的问题不清楚,是否已将此代码放入按钮单击处理程序中?SELECT查询返回什么,是否有异常/etc?是的..我输入了按钮事件,没有异常抛出..但没有过程?但没有过程?