亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

在數據庫中提供只讀數據

標簽:
SQL Server

专案需要,需要在数据库中提供一个些数据,可让用户读取,但不能修改。
或许你需要创建一个表,手动添加这些静态数据,这样的话,用户有可能直接打开数据库修改。
也许你会创建一个table-valued 函数并加密。

解决方案很多,下面Insus.NET使用Clr存储过程来实现,把数据直接设置于CLR程序中。当部署于SQL时,如果用户没有拿到dll,也许一时无法修改,仅能只读了。

创建一个CLR存储过程:



可复制代码:

[Microsoft.SqlServer.Server.SqlProcedure]    public static void SiteInfor()    {              //创建变量        SqlMetaData Id;        SqlMetaData Name;        SqlMetaData Key;        SqlDataRecord record;        //创建metadata列(字段)。        Id = new SqlMetaData("Id", SqlDbType.Int);        Name = new SqlMetaData("Name", SqlDbType.NVarChar,25);        Key = new SqlMetaData("Key", SqlDbType.NVarChar,30);        //使用metadata列创建一笔新记录        record = new SqlDataRecord(new SqlMetaData[] { Id, Name, Key });        //为列域赋值。        record.SetInt32(0,1);        record.SetString(1, "DG");        record.SetString(2, "5a01ceba-4168-44a2-a68a-5b430e5ad127");        //将记录发送到调用程序。        SqlContext.Pipe.Send(record);    }

View Code


部署至SQL中,有两种方式,一是手动在Microsoft SQL Management Studio下进行,还有一个是在查询分析器执行SQL语句。两种方法,均在前面的CLR相关文章中详细提及。

部署成功,我们可以在SQL数据库可看到CLR存储过程:



此存储过程,我们是无法Modify的。

试执行此存储过程:

 

下面内容于2015-04-03 09:40分修改或补充:
针对最后一段代码,修改如下:

 

SqlContext.Pipe.SendResultsStart(record);SqlContext.Pipe.SendResultsRow(record);SqlContext.Pipe.SendResultsEnd();

View Code

 

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
移動開發工程師
手記
粉絲
18
獲贊與收藏
136

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消