【问题标题】:SQL command in C# doesn't work [closed]C# 中的 SQL 命令不起作用 [关闭]
【发布时间】:2014-07-30 07:20:45
【问题描述】:

我正在尝试将新数据添加到名为 Users 的数据库表中。

public string SendUserData(string Name, string Password, string Email)
    {
        SqlCeConnection conn = new SqlCeConnection("Data Source = " + HttpContext.Current.Server.MapPath(".") + "\\App_Data\\Database_Users.sdf");
        SqlCeCommand cmd = new SqlCeCommand("INSERT INTO User (Username, Password, Email) VALUES ('" + Name + "' , '" + Password+ "' , '" + Email + "')" , conn );

        conn.Open();

        return cmd.CommandText;
    }

它没有在表格中发布任何内容,有什么建议吗?

【问题讨论】:

    标签: c# sql .net database


    【解决方案1】:

    需要执行的命令

    public string SendUserData(string Name, string Password, string Email)
    {
        using(SqlCeConnection conn = new SqlCeConnection("....."))
        using(SqlCeCommand cmd = new SqlCeCommand(@"INSERT INTO User (Username, Password, Email) 
                                     VALUES (@name, @pass, @email)" , conn );
        {
            conn.Open();
            cmd.Parameters.AddWithValue("@name",  Name);
            cmd.Parameters.AddWithValue("@pass",  Password);
            cmd.Parameters.AddWithValue("@email",  EMail);
            cmd.ExecuteNonQuery();  // <- This line inserts the record in the database
        }
        // This line probably is not needed
        return cmd.CommandText;
    }
    

    任何命令都应该至少有一个命令文本和一个打开的连接。此时您可以调用命令提供的执行方法之一

    • ExecuteNonQuery:对于 INSERT/DELETE/UPDATE 或其他命令 更改数据库的架构
    • ExecuteScalar:从 SQL 语句中检索单个值 (计数总和等...)
    • ExecuteReader:获取允许检索的 DataReader SELECT 语句中的数据行

    At this link a tutorial about the usage of SqlCommand
    (或任何类型的派生 DbCommand 类,如 SqlCeCommand)

    还要注意,连接和命令应包含在 using 语句中,以确保在不再需要对象时关闭并处置对象,以防出现异常

    最后,不要使用字符串连接来构建命令文本。始终使用参数化查询来避免 sql 注入攻击和字符串中引号的解析问题。小数分隔符或日期格式

    【讨论】:

      【解决方案2】:

      语法不完整。您必须执行命令,如果不再需要连接,最好关闭连接。

          public string SendUserData(string Name, string Password, string Email)
          {
              SqlCeConnection conn = new SqlCeConnection("Data Source = " + HttpContext.Current.Server.MapPath(".") + "\\App_Data\\Database_Users.sdf");
              SqlCeCommand cmd = new SqlCeCommand("INSERT INTO User (Username, Password, Email) VALUES ('" + Name + "' , '" + Password + "' , '" + Email + "')", conn);
      
              conn.Open();
              cmd.ExecuteNonQuery();
              conn.Close();
              return cmd.CommandText;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-23
        • 1970-01-01
        • 1970-01-01
        • 2015-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多