你是直接生成SQL语句来保存的吧,此时有单引号就不行了你可以把这些文本当成二进制数据存入 “OLE对象” 字段中

解决方案 »

  1.   

    不知道你是通过什么样的方式去存的。
      可能使用普通参数方式(varchar或text类型)是不行的。应该使用byte[]的参数类型即大对象,在Access数据库中为Ole对象。
      具体是这样的:在Command中的参数设置为Byte[]类型,然后将这段文本转换为Byte[]作为参数传进去,再执行就可以成功了,当然以后用时也要在转换回来。
      其实如果在SqlServer中,有text类型的字段就可以直接搞定
      

  2.   

    你是说将备注型字段改为“OLE对象” 字段,那该如何保存呢,有无例子?谢谢啦!
      

  3.   

    我是将整个文章作为一个字符串保存到一个备注型的字段中去的,刚才按sqhua(拉长弓兮射天狼)的意思测了一下,确实是单引号的问题,是不是必须要将该备注型字段改成“OLE对象” 字段,再通过ssdjmcj8048(不爱我的我不爱) 给的思路去保存呢,然而如何将其转换回来并加以显示呢?
      

  4.   

    那就只能先把文件转成byte之类的数据类型,然后再把byte转成string存起来不就没有源码吗?如果是大型数据库用binary就比较方便了。
      

  5.   

    设表有两个字段name(text),data(oledb)
    this.oleDbConnection1.Open();
    OleDbCommand cmd = this.oleDbConnection1.CreateCommand();
    cmd.CommandText = "INSERT INTO test (name,data) VALUES(?,?)";
    OleDbParameter p = cmd.Parameters.Add("name", OleDbType.VarChar);
    p.Value = "wh";
    byte[] yourData = new Byte[100];
    p = cmd.Parameters.Add("data", OleDbType.Binary);
    p.Value = yourData;
    try{
      cmd.ExecuteNonQuery();
    }
    catch(Exception ep){
      MessageBox.Show(ep.Message);
    }
    this.oleDbConnection1.Close();