读书人

如何判断数据库查询的输入为非法

发布时间: 2012-01-30 21:15:58 作者: rapoo

怎么判断数据库查询的输入为非法?

C# code
string SqlStr = "SELECT *    FROM BusStation WHERE st LIKE '%'+@st+'%'";                SqlCommand cmd = new SqlCommand(SqlStr, conn);                cmd.Parameters.AddWithValue("@st", st1);                        SqlDataReader reader1 = cmd.ExecuteReader();                string[] temp = new string[reader1.FieldCount];                try                {                    //if ((reader1[0].ToString=null)  这里怎么判断用户输入的信息不对啊  我这么写会报错啊 ?                    //    temp[0] = "没有!";                    while (reader1.Read())                                                         {                        for (int i = 0; i < reader1.FieldCount; i++)                        {                            temp[i] = reader1[i].ToString();                        }                    }//while                                  }//try


[解决办法]
if(string.IsNullOrEmpty(temp[0]))
{}
[解决办法]
楼主注释掉的那个地方感觉有几个错误,首先如果reader1这个对象为空的话就不能写reader1[0],当然也不能用ToString()这个方法了,而且判断的时候应该是==null,不是=null。写成
if (reader1)
{
}
这样应该可以吧
[解决办法]
你是判断从界面输入的,还是用户输入到数据库的记录??
[解决办法]
判断是否有数据存在,数据为空时检验一下
[解决办法]
探讨
if(string.IsNullOrEmpty(temp[0]))
{}

[解决办法]
探讨
引用:
if(string.IsNullOrEmpty(temp[0]))
{}


[解决办法]
你可以用验证控件啊,不合法的不让他输入,或者直接替换输入的非法字符串
C# code
//字符串清理        public  string InputText(string inputString, int maxLength)         {                        StringBuilder retVal = new StringBuilder();            // 检查是否为空            if ((inputString != null) && (inputString != String.Empty))             {                inputString = inputString.Trim();                                //检查长度                if (inputString.Length > maxLength)                    inputString = inputString.Substring(0, maxLength);                                //替换危险字符                for (int i = 0; i < inputString.Length; i++)                 {                    switch (inputString[i])                     {                        case '"':                            retVal.Append(""");                            break;                        case '<':                            retVal.Append("<");                            break;                        case '>':                            retVal.Append(">");                            break;                        default:                            retVal.Append(inputString[i]);                            break;                    }                }                                retVal.Replace("'", " ");// 替换单引号            }            return retVal.ToString();                    }
[解决办法]
string[] temp = new string[reader1.FieldCount];这个数组不能这么定义
修改成
if (reader1.FieldCount>0)
{
string[] temp = new string[reader1.FieldCount];
}
else
{
string[] temp = new string[1];
}
------解决方案--------------------


顶下八楼
[解决办法]
如果你一定要照自己上面那思路,那就是9楼说的那样
修改下就可以了

读书人网 >C#

热点推荐