千家信息网

如何使用c#访问存取SQL数据

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍"如何使用c#访问存取SQL数据",在日常操作中,相信很多人在如何使用c#访问存取SQL数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用c#访
千家信息网最后更新 2025年02月23日如何使用c#访问存取SQL数据

这篇文章主要介绍"如何使用c#访问存取SQL数据",在日常操作中,相信很多人在如何使用c#访问存取SQL数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用c#访问存取SQL数据"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

  如何创建可以使用FileStream的数据库

  1.创建数据库

  创建数据时可以执行以下T-SQL语句,

  CREATEDATABASETestDBONPRIMARY(NAME=TestDB,FILENAME='c:\data\TestDB.mdf'),FILEGROUPFileStreamGroup1CONTAINSFILESTREAM(NAME=Arch4,FILENAME='c:\data\filestream1')LOGON(NAME=TestDBlog,FILENAME='c:\data\TestDBlog.ldf')GO

  假如是在已经创建好的数据库上启用FileStream,可以

  a.Rightclickthe"TestDB"databaseandselect"Properties".b.FirstcreateaFileGroup,click"Filegroups"menuandcreateoneunder"Stream"section,named"FileStreamGroup1".Andthenclick"Files"menu,andaddafilenamed"filestream1"andSetit'sFileGroupto"FileStreamGroup1",andthenspecifyafoldertoholddata,likec:\Data.Clickok,andyoucancheckthefolder"c:\data"toseewhatisadded.

  2.创建表

  CREATETABLE[dbo].[TestTable2]([ID][uniqueidentifier]ROWGUIDCOLNOTNULL,[ContentType][nvarchar](50)NOTNULL,[FileName][nvarchar](50)NOTNULL,[FileContent][varbinary](max)FILESTREAMNULL,[FileSize][int]NULL,CONSTRAINT[PK_TestTable2]PRIMARYKEYCLUSTERED([ID]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]FILESTREAM_ON[FileStreamGroup1])ON[PRIMARY]FILESTREAM_ON[FileStreamGroup1]GOSETANSI_PADDINGOFFGO

  假如表已经创建,可以执行以下TSQL来设置:

  ALTERTABLE[dbo].[TestTable]altercolumnID[uniqueidentifier]notnullALTERTABLE[dbo].[TestTable]altercolumnIDaddROWGUIDCOLALTERTABLE[dbo].[TestTable]addFileContentvarbinary(MAX)FILESTREAM;

  如何使用c#访问存取SQL数据

  读:

  SqlConnectionconn=null;conn=newSqlConnection(connect);conn.Open();tx=conn.BeginTransaction();varqry="SELECTFileName,FileContent.PathName()asFilePath,ContentType,GET_FILESTREAM_TRANSACTION_CONTEXT()asTranContextFROMTestTable2WHEREID=@ID";varcmd=newSqlCommand(qry,conn,tx);cmd.Parameters.AddWithValue("@ID",id);using(rdr=cmd.ExecuteReader()){if(rdr.HasRows){rdr.Read();fileModel=newFileModel();fileModel.FileName=Convert.ToString(rdr["FileName"]);fileModel.FilePath=Convert.ToString(rdr["FilePath"]);byte[]tranContext=(byte[])rdr["TranContext"];fileModel.ContentType=Convert.ToString(rdr["ContentType"]);;fileModel.FileStream=newSqlFileStream(fileModel.FilePath,tranContext,FileAccess.Read);}}

  得到文件的Stream,就可以对该文件进行读写操作了。

  写:

  publicstaticvoidPostFileToDB(HttpPostedFileBasefile){stringfileName=Path.GetFileName(file.FileName);stringcontentType=file.ContentType;intfilefileSize=file.ContentLength/1024;using(SqlConnectionconn=newSqlConnection(connect)){conn.Open();using(SqlTransactiontrn=conn.BeginTransaction()){SqlCommandcmdInsert=newSqlCommand(@"insertintoTestTable2(FileName,FileContent,ContentType,FileSize)outputINSERTED.FileContent.PathName(),GET_FILESTREAM_TRANSACTION_CONTEXT()values(@FileName,0x,@ContentType,@FileSize)",conn,trn);cmdInsert.Parameters.Add("@FileName",SqlDbType.VarChar,256);cmdInsert.Parameters["@FileName"].Value=fileName;cmdInsert.Parameters.Add("@ContentType",SqlDbType.VarChar,256);cmdInsert.Parameters["@ContentType"].Value=contentType;cmdInsert.Parameters.Add("@FileSize",SqlDbType.Int);cmdInsert.Parameters["@FileSize"].Value=fileSize;stringpath=null;byte[]context=null;//cmdInsertisanINSERTcommandthatusestheOUTPUTclause//ThusweusetheExecuteReadertogetthe//resultsetfromtheoutputcolumns//using(SqlDataReaderrdr=cmdInsert.ExecuteReader()){rdr.Read();path=rdr.GetString(0);context=rdr.GetSqlBytes(1).Buffer;}using(SqlFileStreamsfs=newSqlFileStream(path,context,FileAccess.Write)){file.InputStream.CopyTo(sfs);}trn.Commit();}}}

到此,关于"如何使用c#访问存取SQL数据"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数据 c# 存取 学习 数据库 文件 更多 帮助 实用 接下来 文章 方法 是在 理论 知识 篇文章 网站 语句 资料 跟着 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 怎么用自己的手机做服务器 现代网络技术与劳动实践基地 数据库之间怎么共享 微信的表情包数据库如何存放 网络安全决定 莱芜酒店hr软件开发 河南好的软件开发材料 网络安全法什么法 国际服务器代理用什么软件 未来5年的互联网科技 网页程序怎么传到服务器 国家网络安全怎么攻击 网络电视老是出现服务器错误 公安宣传网络安全主题活动 数据库中的学位论文 杰克股份有限公司软件开发 上海智能化网络技术开发行业标准 买财务软件把服务器买来 阿拉德虎啸服务器怎么换帐号 我的世界服务器一键生成房子软件 湖州云软件开发 重庆网络安全工程师报名考试时间 家庭网络安全教育听课记录 小伙自学网络技术 使用ajax从数据库取图片 数据库中的子模式是什么 全球应用软件开发市场分析 数据库sql删除表中的一项内容 云南学软件开发哪所学校好 iis 下载服务器搭建
0