c#中的SQL命令不工作

本文关键字:工作 命令 SQL 中的 | 更新日期: 2023-09-27 18:15:39

我正在尝试向名为Users的DB表添加新数据。

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命令不工作

需要执行的命令

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:用于插入/删除/更新或其他命令修改数据库模式
  • ExecuteScalar:从SQL语句中检索单个值(计算金额等)
  • ExecuteReader:获取一个允许检索的数据阅读器SELECT语句
  • 中的数据行数

这个链接是关于SqlCommand用法的教程
(或任何类型的派生DbCommand类,如SqlCeCommand)

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

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

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

    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;
    }