简体   繁体   English

C#插入查询不起作用

[英]C# insert query not working

i have written insert query for my application to create new user with password, but its not working, please check and correct it. 我已经为我的应用程序编写了插入查询以使用密码创建新用户,但此方法无法正常工作,请检查并更正它。

 con.Open();
        string a;
        a = "insert into tbl_KKSUser(EName,Uname,Password)values(@en,@un,@pas)";
        SqlCommand cm = new SqlCommand(a, con);
        SqlParameter paramName;
        paramName = new SqlParameter("@en", SqlDbType.VarChar, 25);
        paramName.Value = DropDownList1.SelectedItem.Text;
        cm.Parameters.Add(paramName);

        string original = TextBox2.Text.Trim();
        int h = original.GetHashCode();
        string withHash = original;
        b1 = Encoding.BigEndianUnicode.GetBytes(withHash);
        encrypted = Convert.ToBase64String(b1);
        SqlParameter paramPass;
        paramPass = new SqlParameter("@pas", SqlDbType.VarChar, 300);
        paramPass.Value = Convert.ToString(encrypted);
        cm.Parameters.Add(paramPass);
        Response.Write("<script>alert('inserted')</alert>");
        con.Close();

You are not executing the query. 您没有执行查询。 You need to do: 您需要做:

cm.ExecuteNonQuery();

You must call ExecuteNonQuery function before closing connection 您必须在关闭连接之前调用ExecuteNonQuery函数

 con.Open();
            string a;
            a = "insert into tbl_KKSUser(EName,Uname,Password)values(@en,@un,@pas)";
            SqlCommand cm = new SqlCommand(a, con);
            SqlParameter paramName;
            paramName = new SqlParameter("@en", SqlDbType.VarChar, 25);
            paramName.Value = DropDownList1.SelectedItem.Text;
            cm.Parameters.Add(paramName);

            string original = TextBox2.Text.Trim();
            int h = original.GetHashCode();
            string withHash = original;
            b1 = Encoding.BigEndianUnicode.GetBytes(withHash);
            encrypted = Convert.ToBase64String(b1);
            SqlParameter paramPass;
            paramPass = new SqlParameter("@pas", SqlDbType.VarChar, 300);
            paramPass.Value = Convert.ToString(encrypted);
            cm.Parameters.Add(paramPass);

            cm.ExecuteNonQuery(); // here call ExecuteNonQuery

            Response.Write("<script>alert('inserted')</alert>");
            con.Close();

Two things are missing there.... 那里缺少两件事。

  1. You are passing 3 sql variables in the query and adding only two parameters. 您在查询中传递了3个sql变量,并且仅添加了两个参数。

  2. add the following line too, 也添加以下行,

     cm.ExecuteNonQuery(); 

The ExecuteNonQuery() is one of the most frequently used method in SqlCommand Object, and is used for executing statements that do not return result sets (ie. statements like insert data , update data etc.) ExecuteNonQuery()是SqlCommand对象中最常用的方法之一,用于执行不返回结果集的语句(即,诸如插入数据,更新数据之类的语句)。

so use 所以用

cm.ExecuteNonQuery();

And also add all used parameters ie 3 parameters in your example. 并在示例中添加所有使用的参数,即3个参数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM