>>假如数据UserName中含有单引号,就会出现错误,但是单引号的出现是无法避免的
在注册UserName时,你就要判断是否含有单引号,如有,告诉用户UserName中不能含有单引号。

解决方案 »

  1.   

    to sumanden(心平气和)
    要是在个人简介中呢?还有新闻内容的的添加,这只是一个例子。
      

  2.   

    to  bingeng(大眼镜) & sumanden
    可能你们对@parameter的理解不够透彻,其实是这样的,在你引用@parameter的时候系统自动对单引号和双引号作处理,所以实际应该是这样。
    String cmdtext="INSERT INTO [User] (UserAccount, UserPass, UserName) VALUES (@UserAccount,@UserPass,@UserName)"
    这样处理@userAccount等参数的时候就如同存储过程一样。
    只要按照下面的样子定义参数
    SqlDAtaAdapter myAd=new SqlDataAdapter(cmdtext,myConn);
    myAd.SelectCommand.Parameters.Add("@UserAccount",SqlDbType.Varwchar,50,UserAccount实际值)
    myAd.SelectCommand.Parameters.Add("@UserPass",SqlDbType.Varwchar,50,UserPass实际值)
    这样可以很好的处理引号问题。以上是我个人的见解,我开发的系统所有操作都是通过如上方式或者存储过程
    处理,没有碰到引号的问题。
      

  3.   

    to  jackyhx(一杯红茶,几句实话) 谢谢你,我对parameter集合的不太理解,可是他只能用在sql2000数据库阿,在access中可以解决吗?sql空间太贵(:。不好意思
      

  4.   

    to binggeng 在access中同样可以的,我最近刚好用access做了一个。
      

  5.   

    to catter 
    有何安全问题,请指教。。
      

  6.   

    to  jackyhx(一杯红茶,几句实话) 能给出一个例子吗?
    我在编译组件时,提示错误,具体的忘了。大体是OleDbConnection中没有parameter集合的意思。请指教
      

  7.   

    to  jackyhx(一杯红茶,几句实话)给出一个OleDbConnection的例子
      

  8.   

    你用Jet4.1 OleDb的连接
    可以用OleDbDataAdapter.SelectCommand.Parameters.Add(....)来加参数
      

  9.   

    hehe~`
    jackyhx(一杯红茶,几句实话) ( )改名了~```
    不过更加贴切
      

  10.   

    to  jackyhx(一杯红茶,几句实话) 谢谢jackyhx,我对parameter已经了解了,以前只是用,不理解!现在好了,我在http://www.zdnet.com.cn/developer/code/story/0,2000081534,39054202-2,00.htm
    找到一篇文章,建议在oledb中不使用Parameters集合。(3)OleDb的问题
    问题:大家都知道.Net平台下访问数据库有两种途径,一种是SqlClient,另一种就是OleDb,SqlClient是专为SQL Server设计的,为了保证程序的兼容性,我们还是得使用OleDb。使用OleDb是一件令人痛苦的事情,必须有着超人的意志力和耐心,使用OLEDB写一次程序和做一次恶梦没有两样,大家真不知道那些五花八门的错误出在什么地方。先看下面的程序。string strInsertRead = "Insert Into UnRead (Judge1_Result,Judge2_Result) ";
    strInsertRead += " Values (@Judge1_Result,@Judge2_Result)"; OleDbCommand MyComm = new OleDbCommand(strInserRead,MyConn); MyComm.Parameters.Add("@Judge1_Result",OleDbType.LongVarChar);
    MyComm.Parameters["@Judge1_Result"].Value = strJudge1_Result;MyComm.Parameters.Add("@Judge2_Result",OleDbType.LongVarChar);
    MyComm.Parameters["@Judge2_Result"].Value = strJudge2_Result; ...... MyComm.ExecuteNonQuery(); 执行这么一段程序,你们认为会报什么错误?(注意MyConn是OleDbConnection实例,已经打开)报出的错误是“输入数据类型与数据库字段类型不匹配!!”?我是想了好久?strJudge1_Result和strJudge2_Result都是string,而数据库中相应字段的为"TEXT",怎么会相配?怎么也不可能啊。没有办法,我改变字段的数据库类型试着让数据录入数据库,然后再直接从数据库中查看录入的数据是什么?一看不知道,一看就把我气昏,进入数据库的并不是strJudge1_Result和strJudge2_Result所表示的判断的结果,而是设定的另一个变量IdCard和Template,两个毫不相干的变量怎么会搞到一起去??我使用Trace查看入库前strJudge1_Result的数据是正确的,这就说明是在入库时出现的问题,这里就是Parameters属性做的好事!我把这个程序中的OleDB全部改成Sql,程序全部正常!我只能说OleDb的数据库操作是垃圾(也许说的有些过火),大家如果操作OleDb出现了一堆问题,你要信任自己,有些事情不是你的错,而是微软不想你用其它的数据库。解决方法:如果您是操作SQL Server,那么我建议您直接使用SqlClient,这样免去很多麻烦。如果非要使用OleDb来操作其它的数据库,请尽量少用Parameters属性来传递参数,而是直接写进SQL语句: string strInsertRead = "Insert Into UnRead (Judge1_Result,Judge2_Result) ";
    strInsertRead += " Values ('"+strJudge1_Result+"','"+Judge2_Result+"')";本文转自.Net中华网 
    责任编辑:炒饭