Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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# 登录页面中“值”一词附近的语法错误_C#_Sql_Database_Login - Fatal编程技术网

C# 登录页面中“值”一词附近的语法错误

C# 登录页面中“值”一词附近的语法错误,c#,sql,database,login,C#,Sql,Database,Login,我正在尝试为学校的项目站点创建登录页面,但问题是,当我尝试打开login.aspx时,VS Express for web 2013中会弹出一个错误,上面说: 这是登录页面的CS文件,但带有单词Values的行似乎很好: public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string user_nam

我正在尝试为学校的项目站点创建登录页面,但问题是,当我尝试打开login.aspx时,VS Express for web 2013中会弹出一个错误,上面说:

这是登录页面的CS文件,但带有单词Values的行似乎很好:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string user_name = Request.Form["user_name"];
        string passwrd = Request.Form["passwrd"];

        string RegStatus;
        if ((user_name == "") || (passwrd == ""))
        {
            RegStatus = ("missing data or wrong data");
        }

        else
        {
            string selectQuery = "SELECT * FROM YoadUserLists (user_name, passwrd) VALUES ('";
            selectQuery += user_name + "','" + passwrd + "')";
            Response.Write(selectQuery);
            MyAdoHelper.DoQuery(selectQuery);
            RegStatus = ("Login was succeessful");
        }
        Response.Write(RegStatus);
        Response.End();
    }
}
我不明白是什么问题

停下来!持有不要对SQL语句使用字符串连接。这将使您的代码易受SQL注入攻击

将此查询用于错误地进行插入而不是选择的参数:

string selectQuery = "select * from YoadUserLists where user_name = @username and passwrd = @passwrd";
将参数添加到命令中,如下所示:

var usernameParam = new SqlParameter("username");
usernameParam.Value = username;
command.Parameters.Add(usernameParam);

var passwrdParam = new SqlParameter("passwrd");
passwrdParam.Value = passwrd;
command.Parameters.Add(passwrdParam);

您的sqlselect似乎是insert和Select的混合。 因为你说,你想登录,我想你想选择

可能需要的SQL请求是:

SELECT user_name, passwrd FROM YoadUserLists WHERE ...?
还是要插入

INSERT INTO YoadUserLists (user_name, passwrd) VALUES ...?

请注意,您的SQL不受SQLInjections的保护,因为您将给定的值直接转换到SQL查询中而无需转义

我想你把一些不同的事情弄混了。。。 您的变量名为selectQuery,您还可以开始从。。。但接下来您将继续使用insert语句的语法

使用OleDbCommand,其工作原理如下:

...
using (var cmd = new OleDbCommand())
{
     cmd.CommandText = "SELECT * FROM SOMETHING WHERE PARAMETER = ?";
     cmd.Parameters.Add(new OleDbParameter("@PARAMETER", 1));
     ...
}
...
然而,仅仅为sqlstatements指定一个字符串是非常糟糕的,您不应该这样做


我不知道这是否对你有帮助,但是如果你想对数据库进行选择,然后你的语句的语法是错误的。

发布原始代码而不是图像。按照要求发布原始代码你需要插入语句而不是选择我已经按照你说的那样尝试了,我得到了这个错误:下一个错误的语法“*”这将不是一个公共站点,只是学校的最终项目,但谢谢你的关注。当我厌倦了你的代码时,我得到了这样一个结论:现在就学会使用好的实践。不要只是在“重要的时候”开始使用它们。稍后可能会出现一些不太重要的情况…当我使用代码u时,如果我遇到以下错误:我不明白在何处添加您在“将参数添加到命令”中提到的代码行,如下所示…可能您必须将它们传递给MyAdoHelper.DoQueryselectQuery;。如上所示:如果要选择,那么:select*from somethy where columname=…那么正确的语法是什么?原谅我的愚蠢,但命令是什么?我应该把它放在哪里?我只需要修复登录代码并解释我所做的工作,因为在C语言中有一百万种不同的方式来触发SQL语句。OleDbCommand就是其中之一。请再次查看MSDN参考我不知道如何使用这些我只是不知道我的原始语法有什么问题你想在数据库中插入一些东西还是想从中检索数据?