Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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# ASP.NET登录,转换为.ToInt32();_C#_Asp.net - Fatal编程技术网

C# ASP.NET登录,转换为.ToInt32();

C# ASP.NET登录,转换为.ToInt32();,c#,asp.net,C#,Asp.net,我正在编写登录脚本,无法让Convert.ToInt32()为我工作 错误:错误 “System.Convert.ToInt32(对象)”是一个“方法”,但使用起来像 “类型” 片段: con.Open(); string mysql; // generate an sql insert query for the database mysql = "SELECT * FROM [Users] UserName='" + tbUser.Text + "'"; Ol

我正在编写登录脚本,无法让
Convert.ToInt32()
为我工作

错误:错误

“System.Convert.ToInt32(对象)”是一个“方法”,但使用起来像 “类型”

片段:

    con.Open();
    string mysql; // generate an sql insert query for the database
    mysql = "SELECT * FROM [Users] UserName='" + tbUser.Text + "'";
    OleDbCommand CheckUser = new OleDbCommand(mysql, con);
    int temp = new Convert.ToInt32(CheckUser.ExecuteScalar().ToString());

感谢您的帮助。

丢失
new
关键字:

int-temp=Convert.ToInt32(CheckUser.ExecuteScalar().ToString())


您看到警告是因为您正在尝试创建静态方法的实例。通常创建非静态类型的实例

会丢失
新的
关键字:

int-temp=Convert.ToInt32(CheckUser.ExecuteScalar().ToString())


您看到警告是因为您正在尝试创建静态方法的实例。通常创建非静态类型的实例

更改
int temp=new Convert.ToInt32(选中user.ExecuteScalar().ToString())

to
int temp=Convert.ToInt32(CheckUser.ExecuteScalar().ToString())

更改
int temp=new Convert.ToInt32(CheckUser.ExecuteScalar().ToString())
to
int temp=Convert.ToInt32(CheckUser.ExecuteScalar().ToString())

尝试以下操作:

Int32 count = (Int32) CheckUser.ExecuteScalar();
试试这个:

Int32 count = (Int32) CheckUser.ExecuteScalar();

您可以使用
选择1
提高性能,如下所示:

con.Open();
string mysql; // generate an sql insert query for the database
mysql = "SELECT 1 FROM [Users] UserName='" + tbUser.Text + "'";
OleDbCommand CheckUser = new OleDbCommand(mysql, con);
int temp = Convert.ToInt32(CheckUser.ExecuteScalar());

返回一个
对象
,因此如果值匹配,则它将为1,否则为0。

您可以使用
选择1作为提高性能:

con.Open();
string mysql; // generate an sql insert query for the database
mysql = "SELECT 1 FROM [Users] UserName='" + tbUser.Text + "'";
OleDbCommand CheckUser = new OleDbCommand(mysql, con);
int temp = Convert.ToInt32(CheckUser.ExecuteScalar());

返回一个
对象
,因此如果值匹配,它将为1,否则为0。

您是否尝试过
(int32)CheckUser.ExecuteScalar()?哦,看一个sql注入攻击……你试过
(int32)CheckUser.ExecuteScalar()吗?哦,看一个sql注入攻击…为什么要使用int32?使用INT16当
short
确实会少用两个字节时,问题在于编译器错误,而不是代码的内存使用情况。如果我们要分析问题中的所有内容,尝试堵塞安全漏洞,重新考虑并改进性能,我们可以在这里呆一段时间!你为什么使用int32?使用INT16当
short
确实会少用两个字节时,问题在于编译器错误,而不是代码的内存使用情况。如果我们要分析问题中的所有内容,尝试堵塞安全漏洞,重新考虑并改进性能,我们可以在这里呆一段时间!您丢失了列选择,我认为您的意思是
SELECT 1*FROM
no,它是正确的,如果值将在那里,那么它将返回1,否则为空。但是他正在从
[用户]
的第一行的第一列检索值,我假设他正在尝试获取用户ID(或者为
tbUser.Text
中列出的人调用任何列,而不仅仅是查找用户是否存在。因此正确的查询应该是
从[Users]UserName=@UserName
中选择前1个用户ID,当键入我的评论时,我意识到你在做
选择1
而不是
选择前1
,这就是为什么会这样做的原因。)“工作"在您的方法中。但是您正在更改结果,他想要第一列中的值,而不是查找记录是否存在。@ScottChamberlain,您丢失了列选择,我认为您的意思是
SELECT 1*from
no,这是正确的,如果值将在那里,那么它将返回1,否则为空,但他正在从第一列中检索值在
[Users]
的第一行的mn中,我假设是试图获取用户ID(或者为
tbUser.Text
中列出的人调用的任何列),而不仅仅是查找用户是否存在。因此正确的查询应该是
从[Users]中选择前1个用户IDUserName=@UserName
当我输入我的评论时,我意识到你在做
select 1
而不是
select top 1
,这就是为什么它在你的方法中“起作用”。但是你在改变结果,他想要第一列的值,而不是查找记录是否存在。@ScottChamberlain,