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

时间:2011-11-24 04:20:11

标签: c# asp.net sql visual-studio

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

以下是网页中控件的屏幕截图: enter image description here


数据源 SqlDataSource1 :查询:SELECT [Name] FROM [Users]

下拉列表 UserNameList :列出从userName检索到的所有SqlDataSource1

复选框 AdminCb UserCb :自动检查userType的{​​{1}}是否为。

按钮 loadUser :获取用户类型并相应选中复选框。


以下是我的 loadUser 按钮的代码

userName

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

enter image description here


问题:

1)如何更改我的Sql查询以便它可以接收超过1个字符?

2)一旦我能够运行我的SQL查询,我能够复选框吗?

谢谢。

3 个答案:

答案 0 :(得分:1)

您必须使用Parameter并调用ExecuteScalar()方法而不是ExecuteNonQuery()

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

如果从数据库返回的结果包含多个rows,则使用ExecuteReader()方法。

 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();

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

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 {0}", UserNameList.Text);