首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-01-30 
怎么判断数据库查询的输入为非法?C# codestring SqlStr SELECT *FROM BusStation WHERE st LIKE %+@s

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

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("&quot;");                            break;                        case '<':                            retVal.Append("&lt;");                            break;                        case '>':                            retVal.Append("&gt;");                            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楼说的那样
修改下就可以了

热点排行