Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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# SQL从网页控件中选择语句,并根据结果选中相关复选框_C#_Asp.net_Sql_Visual Studio - Fatal编程技术网

C# SQL从网页控件中选择语句,并根据结果选中相关复选框

C# SQL从网页控件中选择语句,并根据结果选中相关复选框,c#,asp.net,sql,visual-studio,C#,Asp.net,Sql,Visual Studio,我的VS2005 C服务器端代码中有一个sql select语句用于web应用程序,我遇到了一些错误 以下是网页中控件的屏幕截图: 数据源SqlDataSource1:查询:从[用户]中选择[名称] Dropdownlist UserNameList:列出从SqlDataSource1检索到的所有用户名 复选框AdminCb和UserCb:自动检查用户名的userType是否为 Button loadUser:获取用户类型并相应地选中复选框 下面是我的loadUser按钮的代码 目前,我遇到了

我的VS2005 C服务器端代码中有一个sql select语句用于web应用程序,我遇到了一些错误

以下是网页中控件的屏幕截图:

数据源SqlDataSource1:查询:从[用户]中选择[名称]

Dropdownlist UserNameList:列出从SqlDataSource1检索到的所有用户名

复选框AdminCb和UserCb:自动检查用户名的userType是否为

Button loadUser:获取用户类型并相应地选中复选框

下面是我的loadUser按钮的代码

目前,我遇到了一个错误:Wong是用户名的第二个字:

问题:

1如何更改我的Sql查询,使其可以接收超过1个单词

2,一旦我能够运行sql查询,我是否能够选中复选框


谢谢。

由于您连接的是SQL字符串,如果输入本身有一个单引号,它会认为这是输入的结尾,而继续输入的是SQL语句,这就是您可能会遇到该错误的原因

切换到使用参数,或确保将任何单引号转义为一对单引号,如:

string sql = string.Format("SELECT [User Type] FROM [Users] where Name like " + UserNameList.Text.Replace("'", "''"));

因为您连接的是SQL字符串,如果输入本身有一个单引号,它会认为这是输入的结尾,而继续输入的是SQL语句,这就是为什么您可能会得到该错误

切换到使用参数,或确保将任何单引号转义为一对单引号,如:

string sql = string.Format("SELECT [User Type] FROM [Users] where Name like " + UserNameList.Text.Replace("'", "''"));

由于错误表明名称有问题,我将仔细查看这一行:

string sql = string.Format("SELECT [User Type] FROM [Users] where Name like " + UserNameList.Text);
如果您使用的是string.Format,那么最好使用它


由于错误表明名称有问题,我将仔细查看这一行:

string sql = string.Format("SELECT [User Type] FROM [Users] where Name like " + UserNameList.Text);
如果您使用的是string.Format,那么最好使用它

您必须使用参数并调用ExecuteScalar方法,而不是ExecuteOnQuery

在这种情况下,如果从数据库返回的结果包含多行,则使用ExecuteReader方法

您必须使用参数并调用ExecuteScalar方法,而不是ExecuteOnQuery

在这种情况下,如果从数据库返回的结果包含多行,则使用ExecuteReader方法


谢谢你的帮助。我的网页现在运行没有任何错误。但有没有办法将变量sql存储到字符串变量中,以确保已成功检索用户类型?是否要存储返回的结果?如果要在web应用程序中使用会话,请使用会话。我只想检查结果是否为“管理员”或“用户”,并且只返回一条记录,因此只需简单检查sql是否存储“管理员”或“用户”,如果是管理员,请选中“管理员”复选框,如果是用户,选中用户复选框。感谢您的帮助。我的网页现在运行没有任何错误。但有没有办法将变量sql存储到字符串变量中,以确保已成功检索用户类型?是否要存储返回的结果?如果要在web应用程序中使用会话,请使用会话。我只想检查结果是否为“管理员”或“用户”,并且只返回一条记录,因此只需简单检查sql是否存储“管理员”或“用户”,如果是管理员,请选中“管理员”复选框,如果是用户,请选中“用户”复选框。
 string sql = "SELECT [User Type] FROM [Users] where [Name]=@Name";
 SqlCommand cmd = new SqlCommand(sql, conn);
 cmd.Parameters.Add("@Name",SqlDbType.VarChar,50).Value=UserNameList.Text;
 conn.Open();
 Object result=cmd.ExecuteScalar();
 conn.Close();

 if(result!=null)
  {
     string usertype=result.ToString();
     if(usertype=="Administrator")
       {}
     else
       {}
  }
 string sql = "SELECT [User Type] FROM [Users] where [Name] like @Name";
 SqlCommand cmd = new SqlCommand(sql, conn);
 cmd.Parameters.Add("@Name",SqlDbType.VarChar,50).Value="%" + UserNameList.Text + "%";
 conn.Open();
 SqlDataReader result=cmd.ExecuteReader();
 while(result.Read())
 {
    ///
   }
 result.Close();
 conn.Close();