C 往SQL資料庫欄位中插入二進位制檔案的三種方法

2021-08-22 09:18:58 字數 4996 閱讀 5658

c#往sql資料庫欄位中插入二進位制檔案的三種方法,網路測試程式一別人好象成功了.我怎麼都測試不成功.同事解說是insertsql語句是字串.所以不能把二進位制內容跟字段聯合起來傳遞給sql2000

//建立乙個sqlconnection物件

string strcon = "initial catalog='hmmisdata';server='192.168.1.180';user id='使用者名稱';password='密碼';persist security info=true";

sqlconnection myconn = new sqlconnection ( strcon ) ;

//測試方法一:使用sql語句插入二進位製欄位,測試失敗

/*string insertsql="insert into ep_hmsoftofficedoclist(documenttype,documentdate,documentmanager,documentdepartment,documenttitle,documentcontent,binaryfiledata,binaryfiletype,binaryfilelength,binaryfilepath,addusername,addusertime,adduserip) ";

insertsql=insertsql+ " values('"+documenttype+"','"+documentdate+"','"+documentmanager+"','"+documentdepartment+"','"+documenttitle+"','"+documentcontent+"',"+@binaryfiledata+",'"+binaryfiletype+"',"+binaryfilelength+",'"+binaryfilepath+"','"+stradduser+"','"+straddtime+"','"+straddip+"')" ;

sqlcommand insertcommand= new sqlcommand();

insertcommand.parameters.add("@binaryfiledata",sqldbtype.image);

insertcommand.parameters["@binaryfiledata"].value=binaryfiledata;

insertcommand.commandtype=commandtype.text;

insertcommand.commandtext=insertsql;

insertcommand.connection=myconn;

insertcommand.connection.open();

insertcommand.executenonquery();

*///測試方法二:使用儲存過程插入二進位製欄位,測試成功

/*sqlcommand insertcommand = new sqlcommand("sp_hmsoft_officedoc_add",myconn);

insertcommand.commandtype = commandtype.storedprocedure;

insertcommand.parameters.add(new sqlparameter("@documenttype", sqldbtype.nvarchar, 50));

insertcommand.parameters.add(new sqlparameter("@documentdate", sqldbtype.nvarchar, 50));

insertcommand.parameters.add(new sqlparameter("@documentmanager", sqldbtype.nvarchar, 50));

insertcommand.parameters.add(new sqlparameter("@documentdepartment", sqldbtype.nvarchar, 50));

insertcommand.parameters.add(new sqlparameter("@documenttitle", sqldbtype.nvarchar, 50));

insertcommand.parameters.add(new sqlparameter("@documentcontent", sqldbtype.nvarchar, 50));

insertcommand.parameters.add(new sqlparameter("@binaryfiledata", sqldbtype.image));

insertcommand.parameters.add(new sqlparameter("@binaryfiletype", sqldbtype.nvarchar, 50));

insertcommand.parameters.add(new sqlparameter("@binaryfilelength", sqldbtype.int));

insertcommand.parameters.add(new sqlparameter("@binaryfilepath", sqldbtype.nvarchar, 50));

insertcommand.parameters.add(new sqlparameter("@addusername", sqldbtype.nvarchar, 50));

insertcommand.parameters.add(new sqlparameter("@addusertime", sqldbtype.nvarchar, 50));

insertcommand.parameters.add(new sqlparameter("@adduserip", sqldbtype.nvarchar, 50));

insertcommand.parameters["@documenttype"].value=documenttype;

insertcommand.parameters["@documentdate"].value=documentdate;

insertcommand.parameters["@documentmanager"].value=documentmanager;

insertcommand.parameters["@documentdepartment"].value=documentdepartment;

insertcommand.parameters["@documenttitle"].value=documenttitle;

insertcommand.parameters["@documentcontent"].value=documentcontent;

insertcommand.parameters["@binaryfiledata"].value=binaryfiledata;

insertcommand.parameters["@binaryfiletype"].value=binaryfiletype;

insertcommand.parameters["@binaryfilelength"].value=binaryfilelength;

insertcommand.parameters["@binaryfilepath"].value=binaryfilepath;

insertcommand.parameters["@addusername"].value=stradduser;

insertcommand.parameters["@addusertime"].value=straddtime;

insertcommand.parameters["@adduserip"].value=straddip;

insertcommand.connection.open();

insertcommand.executenonquery();

*///測試方法三:使用dataset插入二進位製欄位,測試成功

myconn.open();

dataset tempdataset=new dataset();

sqldataadapter tempadapter = new sqldataadapter("select * from ep_hmsoftofficedoclist where 1=0", myconn);

sqlcommandbuilder tempbuilder=new sqlcommandbuilder(tempadapter);

tempadapter.fill(tempdataset);

//'插入一條記錄

datarow tempdatarow = tempdataset.tables[0].newrow();

tempdatarow["documenttype"] =documenttype;

tempdatarow["documentdate"] =documentdate;

tempdatarow["documentmanager"] =documentmanager;

tempdatarow["documentdepartment"] =documentdepartment;

tempdatarow["documenttitle"] =documenttitle;

tempdatarow["documentcontent"] =documentcontent;

tempdatarow["binaryfiledata"] =binaryfiledata;

tempdatarow["binaryfiletype"] =binaryfiletype;

tempdatarow["binaryfilelength"] =binaryfilelength;

tempdatarow["binaryfilepath"] =binaryfilepath;

tempdatarow["addusername"] =stradduser;

tempdatarow["addusertime"] =straddtime;

tempdatarow["adduserip"] =straddip;

tempdataset.tables[0].rows.add(tempdatarow);

tempadapter.update(tempdataset);

//關閉連線

myconn.close ( ) ;

往資料庫中插入資料

private materialenterstore entitymes 入庫表 private materialenterdetail entitymed 入庫明細表 transactionmanager tran datarepository.provider.createtransaction...

C 中往資料庫插入空值的問題

在用c 往資料庫裡面插入記錄的時候,可能有的字段你不賦值,那麼這個欄位的值就為null,如果按一般想法的話,這個值會被資料庫接受,然後在數 據表裡面顯示為null,實際上這就牽扯到乙個型別的問題,c 中的null於sql中的null是不一樣的,sql中的null用c 表示出來就 是dbnull.va...

C 中往資料庫插入空值的問題

在用c 往資料庫裡面插入記錄的時候,可能有的字段你不賦值,那麼這個欄位的值就為null,如果按一般想法的話,這個值會被資料庫接受,然後在數 據表裡面顯示為null,實際上這就牽扯到乙個型別的問題,c 中的null於sql中的null是不一樣的,sql中的null用c 表示出來就 是dbnull.va...