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())代码>
toint temp=Convert.ToInt32(CheckUser.ExecuteScalar().ToString())代码>更改int temp=new Convert.ToInt32(CheckUser.ExecuteScalar().ToString())代码>
toint 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,