public bool OperationSelect()//根据常量来分解消息包
{
switch (flgstr)//result用来返回操作是否成功
{
case "Logo": MsgDetail(); result = Log(); //对数据库的
break;
case "Find": MsgDetail(); result = Find();
break;
case "User": MsgDetail(); result = User();//对聊天对象的操作
break;
default: result = false;
break;
}
return result;
}
/// <summary>
///
/// </summary>
private void MsgDetail()
{
for (int i = 0,num=0; i < total; num++)//解包,提取各字段长度及消息
{
Buffer.BlockCopy(buffer, i, lenghtbuffer, 0, 4);
int count = BitConverter.ToInt32(lenghtbuffer, 0);
if (count == 0)//说明不需要对这个字段的数据进行检查,此时可以用通酏符进行操作
{
Flag[num] = "%";
i += 4;
continue;
}
Console.WriteLine(count);
i += 4;
Flag[num] = Encoding.Default.GetString(buffer, i, count);
i += count;
}
}
private bool Find()
{
bool logresult = true;
SqlDataBase obj = new SqlDataBase();
if (!(obj.Connection()))
{
Console.WriteLine("数据库连接失败");//数据库连接失败
logresult = false;
return logresult;
}
else
{//这里出现了问题,这条语句应怎么写啊?其中会有通酏符%
str = "select * from UserInformation where " +
"ID lile '" + Flag[0] + "' and " +
"Name like '" + Flag[1] + "' and " +
"Age like '" + Flag[2] + "' and " +
"Sex like '" + Flag[3] + "' and " +
"Cale like '" + Flag[4] + "' and " +
"Enducation like '" + Flag[5] + "' and " +
"Salary like '" + Flag[6] + "' and " +
"Contact like '" + Flag[7] + "' and " +
"Address like '" + Flag[8] + "'and ";
Console.WriteLine(str);
if (!(obj.Command(str))) //发送操作命令,查找是否有该用户
logresult = false;
return logresult;
}
Console.WriteLine("查找成功");
return true;
}
无论加不加AND都会有误,应怎么写这条查询语句?错误提示是:在应使用条件的上下文(在LIKE附近)中指定了非布尔类型的表达式.like改为=也不行,总之能用的方法都用了