存储过程:
CREATE? PROCEDURE Zzd
@A1 varbinary(8000)
AS
GO
?
C#:
???SqlConnection cn=null;
???SqlCommand??? cmd=null;
???try
???{
????cn=new SqlConnection();
????cn.ConnectionString="data source=192.168.0.199;initial catalog=haha;user id=sa;password=sa";
????cn.Open();
????cmd=cn.CreateCommand();
????cmd.CommandType=CommandType.Text;
????cmd.CommandText="exec zzd @A1";
????SqlParameter param= new SqlParameter();
????param.ParameterName="@A1";
????param.DbType=DbType.Binary;
????param.Direction=ParameterDirection.Input;
????byte [] a=new byte[200];
????SqlBinary bin=new SqlBinary(a);
????param.Value=bin;
????cmd.Parameters.Add(param);
????cmd.ExecuteNonQuery();
???}
???catch(Exception e1)
???{
????string a11=e1.Message;
???}
???if(cmd!=null)
????cmd=null;
???if(cn!=null)
???{
????cn.Close();
????cn=null;
???}
Ado:
?CoInitialize(NULL);
?{
??_ConnectionPtr cn;
??_CommandPtr??? cmd;
??_ParameterPtr? para;
??SAFEARRAY *psa=NULL;
??para.CreateInstance(__uuidof(Parameter));
?? try
?? {
??? cn.CreateInstance(__uuidof(Connection));
??? cmd.CreateInstance(__uuidof(Command));
??? para.CreateInstance(__uuidof(Parameter));
??? cn-ConnectionString="Provider=SQLOLEDB.1;User ID=sa;password=sa;Initial Catalog=haha;Data Source=192.168.0.199";
??? cn-Open( _bstr_t(L""), _bstr_t(L""), _bstr_t(L""), -1 );
??? cmd-ActiveConnection=cn;
??? cmd-CommandType=adCmdText;
??? cmd-CommandText="exec zzd ?";
??? //para-Name=_bstr_t("@A1");
??? para-Type=adVarBinary;
??? para-Size=8000;
??? para-Direction=adParamInput;
??? SAFEARRAY *psa;
??? SAFEARRAYBOUND rgsabound[1];
??? rgsabound[0].lLbound = 0;
??? rgsabound[0].cElements = 100;
??? psa = SafeArrayCreate(VT_UI1, 1, rgsabound); ///创建SAFEARRAY对象
??? char? pChar='C';
????????????
??? //复制数据
??? for (long i = 0; i
???? SafeArrayPutElement (psa, &i, &pChar);
??? VARIANT varBLOB;
??? varBLOB.vt = VT_ARRAY | VT_UI1;//varBLOB的类型设置为BYTE类型的数组
??? varBLOB.parray = psa;
??? para-Value=varBLOB;
??? cmd-Parameters-Append(para);
??? cmd-Execute(NULL, NULL, adCmdText);
?? }
?? catch (_com_error &e)
?? {
??? _bstr_t bstrError = e.Description();
??? CString m_strError = (LPCTSTR)bstrError;
?? }
?? if(psa!=NULL)
?? {
??? SafeArrayDestroy(psa);
?? }
?? if(cmd!=NULL)
?? {
??? cmd=NULL;
?? }
?? if(cn!=NULL)
?? {
??? cn-Close();
??? cn=NULL;
?? }
?}
?CoUninitialize();