代码之家  ›  专栏  ›  技术社区  ›  Nagaraj Tantri

通过C向SQL表中插入值时出现异常#

  •  0
  • Nagaraj Tantri  · 技术社区  · 14 年前

    嗨,我让manullay创建了textbox,然后用它创建了一个新用户。我使用SQL SERVER 2005作为后端,Visual SERVER 2008作为前端。。

    我有这个LoginAccount表,它存储了新用户创建的详细信息。当我单击按钮时(在该按钮中我编写了通过SQLInsert创建新用户的代码),

      string strConnection = ConfigurationManager.ConnectionStrings"FHDLConnectionString"].ToString();
            SqlConnection sqlConnection = new SqlConnection(strConnection);
            string username = TextBox1.Text;
            string password = TextBox2.Text;
            string confirmpass = TextBox3.Text;
            string SQLQuery = "Select username From LoginAccount where '" + username + "'";
            string SQLQuery1 = "Insert into LoginAccount values ('" + username + "','" + password + "')";
    
            SqlCommand command = new SqlCommand(SQLQuery, sqlConnection);
            SqlCommand command1 = new SqlCommand(SQLQuery1, sqlConnection);
    
            sqlConnection.Open();
            string CheckUsername = "";
    
            if (password.ToString() != confirmpass.ToString())
            {
                Literal1.Text = " Password's does not match ";
            }
            else
            {
                try
                {
                    CheckUsername = command.ExecuteScalar().ToString();
                }
                catch (Exception er)
                {
                    Literal1.Text = " Username already exists ";
                }
    
                string insertQuery = "";
    
                try
                {
                    insertQuery = command1.ExecuteScalar().ToString();
                    Server.Transfer("Login_Created.aspx");
                }
                catch (Exception er)
                {
                    Literal1.Text = " Could not create the user, Please retry with some other option ";
                }
            }
            sqlConnection.Close();
    

    在“fhdl”附近预期条件的上下文中指定的非布尔型表达式

    这是最后一次接球。

    但最主要的是我能够插入用户名和密码到loginacount表!!!!!!! i、 当我看到表内容时,我可以看到在该表中创建的新用户。 另一件事是 此代码以前完美执行过一次,但现在没有:( 谁能告诉我哪里出了问题吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Jay Allard    14 年前

    1-ExecuteScalar()表示有一个返回值。插入没有返回值。改用ExecuteOnQuery。

    2-另外,对于insert语句,指定要插入的字段。在不指定字段的情况下,它试图插入表的前两列,这两列可能不是username和password。

    插入LoginAccount(用户名、密码)值。。。。

    3-select语句不正确。

    从用户名为“”的LoginAccount中选择。。。缺少字段名。

        2
  •  1
  •   chryss    14 年前

    三件事:

    1. Select username From LoginAccount where 'username'

      您想对照数据库检查用户名。

    2. 这段代码使您很容易受到SQL注入攻击。看到了吗 this article 如何在C#中预防它们。

    3. 同样,您也不想将密码存储在数据库的clear中。