baidu了一下发现原来mssql中的blob对象是text或ntext.应该选它,但是长度呢怎么设,好象是固定长度啊

解决方案 »

  1.   

    要求把纯文本的内容写入数据库,文本的容量不超过10mb.
    1.先把纯文本内容用字节流放到缓冲区byte[],然后用流再写入数据库表的字段.
    这个各种语言都有各种实现方式,应该网上有2.那表字段要用什么类型呢?有人说要用大对象比如blob数据类型,mssql里可以用binary类型吗?
    text或ntext可以放纯文本,image类型可以放图片等二进制文件3.如果是binary的话,10mb容量要设成多少长度啊!
    它没有设置上限,一般取决与你的硬盘和程序的限制
      

  2.   

    BCB实现image举例:
    if(DATABASE_STATE==INSERT)
    {
    AnsiString st;
    TMemoryStream *tmp = new TMemoryStream();
    DBI1->Picture->SaveToFile("TTT.jpg");
    tmp->LoadFromFile("TTT.jpg");
    DeleteFile("TTT.jpg");
    ADOQuery1->Parameters->ParamByName("PIC")->LoadFromStream(tmp,ftBlob);
    ADOQuery1->Parameters->ParamByName("TD")->Value=DP1->Date;
    st="摄于"+ DP1->Date;
    ADOQuery1->Parameters->ParamByName("JPEG")->Value=JpegOrBmp?"BMP":"JPEG";
    ADOQuery1->Parameters->ParamByName("IDI")->Value=MEM1->Text + st;
    ADOQuery1->Parameters->ParamByName("HEI")->Value=BT->Height;
    ADOQuery1->Parameters->ParamByName("WID")->Value=BT->Width;
    ADOQuery1->ExecSQL();
    ShowMessage("保存" + IntToStr(tmp->Size ));
    ShowMessage("成功保存图片!");
    delete tmp;
    return;
    }
    //TStream *Stream=new TStream()
    ADO-Post();
    ADO->Refresh();
      

  3.   

    我把数据库表的字段设成text类型.
    请问我要用i/o流来把文本写入数据库表的字段,使用jdbc的preparedstatement来执行inert语句时,set()参数要使用什么类型啊?有几个可参考的setUnicodeStrean,setBinaryStream,
    setByte[],setAsiciiStream 
    首先setUnicodestream()方法在我用的版本下不支持了,用setBinaryStream()运行失败.我用了下setAsciiStream()但是数据库表中的中文显示不出来为?而英文显示正常.我想能正常显示中文和英文请问要用什么set方法啊