数据库的删除是做成逻辑删除还是物理删除

数据库的删除是做成逻辑删除还是物理删除,第1张

不好意思,我要反驳你,

不论什么数据库,使用sql中的删除语句,

例如delete

之类的删除,都是物理删除。

所谓的逻辑删除,是程序设计者的一种设计。

例如给表中加入一个字段

isactive根据这个字段的值确定这条记录是否被逻辑删除。

这种应用实际中也会经常用到。

你所问的物理删除就是用sql进行的删除,谢谢,希望回答你能满意!

一、删除功能:重要数据伪删除,删除校验用户(避免A用户可以删除任何人数据)。文件上传预览删除功能不能做服务器文件删除,不要为了节省服务器资源给用户留下接口。如果要资源有限,那么在删除的时候也需要做用户校验(文件命名或文件路径关联用户ID等)

二、发短信:基本上没有人愿意自己和短信运营商直接对接短信业务,一般都是通过第三方短信服务商购买短信。在用户主动获取短信的时候前端做验证码校验,后端做发送量,发送间隔校验(验证码是可以被机识别的)。做短信日志记录,这些日志可以为前面的后台校验提供数据,系统运行期间的各种好处就不一一举例了。重要功能做语音验证码,比如注册送现金的活动,短信验证码可以被识别

三、页面数据获取:用户平凡的刷新数据会加大服务器压力,当然谁也挡不住用户刷新是吧,但是减少主动刷新次数也是一个减小服务器压力的方法,咱不能自己坑自己吧,(Table页切换做校验,有数据就不再拉取等等)

四、前端静态资源做CDN,可以提高用户访问速度,减少服务器压力

五、用户输入做SQL注入,javascript脚本注入

六、用到的Ajax请求:做ajax加拦截器,通过消息头过滤掉非ajax的地址栏访问,(谁然不一定能全部拦截,但是拦掉一部分小白还是可以得,总不能是个人就能攻击吧)

七、用户输入数据校验,输入文字长度,数字输入大小,int 、long等数据类型合理使用,(积分兑换的时候用户只有1积分,你让他输入兑换积分,你输入21000000000,int 接收的时候,超出了范围成了负数1永远大于负数),还有一点很重要,你的任何校验都不要依靠前端,毕竟前端是为用户的体验而生的,为了自己的安全还是多写点后台校验吧,

八、异常捕获:不要将异常信息抛给用户,首先不美观,其次这些错误信息中可能含有SQL错误,通过这些sql可以了解到你的数据库结构

九、前端数据获取的时候减少不必要字段输出,java面向对象,表数据面向对象,本来页面只需要两个数据,结果你返回了一个实体,前端可已查看到你数据库表结构,多看几个页面那么你的数据库设计就给了人家了呢

十、用户信息加密传输,一定不要把重要数据留在客户端,泄密重要信息的责任是要你承担的哦

十一、 现在越来越多人使用阿里云服务器,做客户项目的时候服务器是客户购买的,当然阿里云账户客户也有,你的配置文件不加密客户就能看见你的系统配置,结合上面的搞搞你的数据库,那你的产品还有什么秘密,至于代码,你觉得他值钱么

十二、 前端JS 脚本 和页面分离,压缩或加密,不要你的团队幸幸苦苦开发的唯美的页面和效果,被人家一个ctrl+s拿去回家研究了,何况你的js中还有大量的逻辑

十三、 线程安全:

1、synchronized同步 (有序性、可见性),

2、使用生产者消费者模式,(唤醒notify(),等待wait())

3、volatile同步(可见性,非有序性,只在无基础数据的赋值 *** 作,直接 *** 作主内存,减少主内存复制到工作内存的cpu消耗)

十四、 数据库读写分离的时候要注意个别业务读也要读在主库上(避免主从同步失败或延时)

 在前面的一篇文章《Visual C#中轻松浏览数据库记录》中 我们介绍了用Visual C#如何把数据表中的字段值绑定到文本框的属性上和如何 *** 作数据记录指针 随意浏览数据表中的记录 本文就接着上一篇的内容 来介绍用Visual C#如何来修改和删除数据记录

一 程序设计和运行的环境设置 ( )视窗 服务器版 ( )Microsoft Access Data Component 以上版本 ( MADC ) ( )本文程序使用的数据库的介绍

为了方便起见 在选用数据库方面选用了本地数据库Access 当然你也可以选用其他类型的数据库 只需要更改文章后面的程序源代码中数据库的引擎 并更改对应的代码就可以了 本程序中使用的数据库名称为sample mdb 在此数据库中有一张数据表books 此数据表的结构如下 字段名称 字段类型 代表意思 Bookid 数字 序号 booktitle 文本书籍名称 bookauthor 文本书籍作者 bookprice 数字 价格 bookstock 数字书架号

二 程序设计难点和应该注意的问题 在程序设计中的重点和难点就是如何用Visual C#删除记录和如何修改记录 下面就这二个问题进行必要的论述 ( )如何用Visual C#正确删除数据表中的记录

在用Visual C#删除记录的时候要注意的是 必须从二个方面彻底删除记录 即从数据库和用Visual C#编程时产生的一个DataSet对象中彻底删除 在程序设计的时候 如果只是删除了DataSet对象中的记录信息 这种删除是一种伪删除 这是因为当他退出程序 又重新运行程序 会发现 那个要删除的记录依然还存在 这是因为DataSet对象只是对数据表的一个镜像 并不是真正的记录本身 但如果只是从数据库中删除记录 因为我们此时程序用到的数据集合是从DataSet对象中读取的 子DataSet对象中依然保存此条记录的镜像 所以就会发现 我们根本没有删除掉记录 但实际上已经删除了 此时只有退出程序 重新运行 才会发现记录已经删除了 本文使用的方法是删除以上二个方面的记录或记录镜像信息 当然你也可以使用其他的方法 譬如 首先从数据库中删除记录 然后重新建立数据连接 重新创建一个新的DataSet对象 这种方法虽然也可以达到相同目的 但显然相对繁杂些 所以本文采用的是第一种方法 直接删除 在程序中具体的实现语句如下 //连接到一个数据库 string strCon = Provider = Microsoft Jet OLEDB ; Data Source = sample mdb ; OleDbConnection myConn = new OleDbConnection ( strCon ) ; myConn Open ( ) ; string strDele = DELETE FROM books WHERE bookid= + t_bookid Text ; OleDbCommand myCommand = new OleDbCommand ( strDele myConn ) ; //从数据库中删除指定记录 myCommand ExecuteNonQuery ( ) ; //从DataSet中删除指定记录信息 myDataSet Tables [ books ] Rows [ myBind Position ] Delete ( ) ; myDataSet Tables [ books ] AcceptChanges ( ) ; myConn Close ( ) ;

( )用Visual C#来修改数据表中的记录 在用Visual C#修改记录和删除记录 在程序设计中大致差不多 具体的实现方式也是通过SQL语句调用来实现的 下面就是在程序中修改记录的具体语句 //连接到一个数据库 string strCon = Provider = Microsoft Jet OLEDB ; Data Source = sample mdb ; OleDbConnection myConn = new OleDbConnection ( strCon ) ; myConn Open ( ) ;

//从数据库中修改指定记录 string strUpdt = UPDATE books SET booktitle = + t_booktitle Text + bookauthor = + t_bookauthor Text + bookprice = + t_bookprice Text + bookstock = + t_bookstock Text + WHERE bookid = + t_bookid Text ;

OleDbCommand myCommand = new OleDbCommand ( strUpdt myConn ) ; myCommand ExecuteNonQuery ( ) ; myConn Close ( ) ;

( )在了解了如何用Visual C#删除和修改记录以后 结合《Visual C#中轻松浏览数据库记录》一文的内容 就可以得到用Visual C#完成删除和修改数据记录的比较完整程序代码 以下是本文中介绍程序的运行后的程序界面

点击小图放大 本文中程序运行后的界面

三 用Visual C#实现删除和修改数据库记录的完整源程序代码 using System ; using System Drawing ; using System ComponentModel ; using System Windows Forms ; using System Data OleDb ; using System Data ; public class DataEdit : Form { private System ComponentModel Container ponents ; private Button delete ; private Button update ; private Button lastrec ; private Button nextrec ; private Button previousrec ; private Button firstrec ; private TextBox t_bookstock ; private TextBox t_bookprice ; private TextBox t_bookauthor ; private TextBox t_booktitle ; private TextBox t_bookid ; private Label l_bookstock ; private Label l_bookprice ; private Label l_bookauthor ; private Label l_booktitle ; private Label l_bookid ; private Label label ; private System Data DataSet myDataSet ; private BindingManagerBase myBind ; private bool isBound = false ; //定义此变量 是判断组件是否已经绑定数据表中的字段

public DataEdit ( ) { // 对窗体中所需要的内容进行初始化 InitializeComponent ( ) ; //连接到一个数据库 GetConnected ( ) ; } //清除程序中用到的所有资源 public override void Dispose ( ) { base Dispose ( ) ; ponents Dispose ( ) ; } public void GetConnected ( ) { try{ //创建一个 OleDbConnection对象 string strCon = Provider = Microsoft Jet OLEDB ; Data Source = sample mdb ; OleDbConnection myConn = new OleDbConnection ( strCon ) ; string strCom = SELECT FROM books ; //创建一个 DataSet对象 myDataSet = new DataSet ( ) ; myConn Open ( ) ; OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ; myCommand Fill ( myDataSet books ) ; myConn Close ( ) ; //判断数据字段是否绑定到 TextBoxes if ( !isBound ) { //以下是为显示数据记录而把数据表的某个字段绑定在不同的绑定到文本框 Text 属性上 t_bookid DataBindings Add ( Text myDataSet books bookid ) ; t_booktitle DataBindings Add ( Text myDataSet books booktitle ) ; t_bookauthor DataBindings Add ( Text myDataSet books bookauthor ) ; t_bookprice DataBindings Add ( Text myDataSet books bookprice ) ; t_bookstock DataBindings Add ( Text myDataSet books bookstock ) ; //设定 BindingManagerBase //把对象DataSet和 books 数据表绑定到此myBind对象 myBind = this BindingContext [ myDataSet books ] ; isBound = true ; } } catch ( Exception e ) { MessageBox Show ( 连接数据库发生错误为 + e ToString ( ) 错误! ) ; } } public static void Main ( ) { Application Run ( new DataEdit ( ) ) ; } private void InitializeComponent ( ) { this ponents = new System ComponentModel Container ( ) ; this t_bookid = new TextBox ( ) ; this previousrec = new Button ( ) ; this l_bookauthor = new Label ( ) ; this delete = new Button ( ) ; this t_booktitle = new TextBox ( ) ; this t_bookauthor = new TextBox ( ) ; this t_bookprice = new TextBox ( ) ; this l_bookprice = new Label ( ) ; this t_bookstock = new TextBox ( ) ; this l_bookstock = new Label ( ) ; this l_booktitle = new Label ( ) ; this update = new Button ( ) ; this nextrec = new Button ( ) ; this lastrec = new Button ( ) ; this firstrec = new Button ( ) ; this label = new Label ( ) ; this l_bookid = new Label ( ) ; t_bookid Location = new System Drawing Point ( ) ; t_bookid Size = new System Drawing Size ( ) ;

t_booktitle Location = new System Drawing Point ( ) ; t_booktitle Size = new System Drawing Size ( ) ;

t_bookauthor Location = new System Drawing Point ( ) ; t_bookauthor Size = new System Drawing Size ( ) ;

t_bookprice Location = new System Drawing Point ( ) ; t_bookprice Size = new System Drawing Size ( ) ;

t_bookstock Location = new System Drawing Point ( ) ; t_bookstock Size = new System Drawing Size ( ) ; //以下是设定在程序中使用到的Label属性 l_bookid Location = new System Drawing Point ( ) ; l_bookid Text = 序 号 ; l_bookid Size = new System Drawing Size ( ) ; l_bookid Font = new System Drawing Font ( 宋体 f ) ; l_bookid TextAlign = System Drawing ContentAlignment MiddleCenter ; l_booktitle Location = new System Drawing Point ( ) ; l_booktitle Text = 书 名 ; l_booktitle Size = new System Drawing Size ( ) ; l_booktitle Font = new System Drawing Font ( 宋体 f ) ; l_booktitle TextAlign = System Drawing ContentAlignment MiddleCenter ; l_bookauthor Location = new System Drawing Point ( ) ; l_bookauthor Text = 作 者 ; l_bookauthor Size = new System Drawing Size ( ) ; l_bookauthor Font = new System Drawing Font ( 宋体 f ) ; l_bookauthor TextAlign = System Drawing ContentAlignment MiddleCenter ; l_bookprice Location = new System Drawing Point ( ) ; l_bookprice Text = 价 格 ; l_bookprice Size = new System Drawing Size ( ) ; l_bookprice Font = new System Drawing Font ( 宋体 f ) ; l_bookprice TextAlign = System Drawing ContentAlignment MiddleCenter ;

l_bookstock Location = new System Drawing Point ( ) ; l_bookstock Text = 书 架 号 ; l_bookstock Size = new System Drawing Size ( ) ; l_bookstock Font = new System Drawing Font ( 宋体 f ) ; l_bookstock TextAlign = System Drawing ContentAlignment MiddleCenter ;

//以下设定程序中用到的功能按钮的属性及对应的事件 delete Location = new System Drawing Point ( ) ; delete ForeColor = System Drawing Color Black ; delete Size = new System Drawing Size ( ) ; delete Font = new System Drawing Font ( 宋体 f ) ; delete Text = 删除记录 ; delete Click += new System EventHandler ( GoDelete ) ;

update Location = new System Drawing Point ( ) ; update ForeColor = System Drawing Color Black ; update Size = new System Drawing Size ( ) ; update Font = new System Drawing Font ( 宋体 f ) ; update Text = 修改记录 ; update Click += new System EventHandler ( GoUpdate ) ;

firstrec Location = new System Drawing Point ( ) ; firstrec ForeColor = System Drawing Color Black ; firstrec Size = new System Drawing Size ( ) ; firstrec Font = new System Drawing Font ( 宋体 f ) ; firstrec Text = 首记录 ; firstrec Click += new System EventHandler ( GoFirst ) ;

previousrec Location = new System Drawing Point ( ) ; previousrec ForeColor = System Drawing Color Black ; previousrec Size = new System Drawing Size ( ) ; previousrec Font = new System Drawing Font ( 宋体 f ) ; previousrec Text = 上一条 ; previousrec Click += new System EventHandler ( GoPrevious ) ;

nextrec Location = new System Drawing Point ( ) ; nextrec ForeColor = System Drawing Color Black ; nextrec Size = new System Drawing Size ( ) ; nextrec Font = new System Drawing Font ( 宋体 f ) ; nextrec Text = 下一条 ; nextrec Click += new System EventHandler ( GoNext ) ;

lastrec Location = new System Drawing Point ( ) ; lastrec ForeColor = System Drawing Color Black ; lastrec Size = new System Drawing Size ( ) ; lastrec Font = new System Drawing Font ( 宋体 f ) ; lastrec Text = 尾记录 ; lastrec Click += new System EventHandler ( GoLast ) ;

label Location = new System Drawing Point ( ) ; label Text = 用Visual C#来修改和删除数据库中的记录 ; label Size = new System Drawing Size ( ) ; label ForeColor = System Drawing SystemColors Desktop ; label Font = new System Drawing Font ( 宋体 f ) ; //设定程序的主窗体的属性 this Text = 用Visual C#来修改和删除数据库中的记录! ; this AutoScaleBaseSize = new System Drawing Size ( ) ; this FormBorderStyle = FormBorderStyle FixedSingle ; this ClientSize = new System Drawing Size ( ) ; //在主窗体中加入组件 this Controls Add ( delete ) ; this Controls Add ( update ) ; this Controls Add ( lastrec ) ; this Controls Add ( nextrec ) ; this Controls Add ( previousrec ) ; this Controls Add ( firstrec ) ; this Controls Add ( t_bookstock ) ; this Controls Add ( t_bookprice ) ; this Controls Add ( t_bookauthor ) ; this Controls Add ( t_booktitle ) ; this Controls Add ( t_bookid ) ; this Controls Add ( l_bookstock ) ; this Controls Add ( l_bookprice ) ; this Controls Add ( l_bookauthor ) ; this Controls Add ( l_booktitle ) ; this Controls Add ( l_bookid ) ; this Controls Add ( label ) ;

} // 删除记录 对应的事件 protected void GoDelete ( object sender System EventArgs e ) { try{ //连接到一个数据库 string strCon = Provider = Microsoft Jet OLEDB ; Data Source = sample mdb ; OleDbConnection myConn = new OleDbConnection ( strCon ) ; myConn Open ( ) ; string strDele = DELETE FROM books WHERE bookid= + t_bookid Text ; OleDbCommand myCommand = new OleDbCommand ( strDele myConn ) ; //从数据库中删除指定记录 myCommand ExecuteNonQuery ( ) ; //从DataSet中删除指定记录 myDataSet Tables [ books ] Rows [ myBind Position ] Delete ( ) ; myDataSet Tables [ books ] AcceptChanges ( ) ; myConn Close ( ) ; } catch ( Exception ed ) { MessageBox Show ( 删除记录错误信息 + ed ToString ( ) 错误! ) ; } } // 修改记录 按钮对应的事件 protected void GoUpdate ( object sender System EventArgs e ) { int i = myBind Position ; try{ //连接到一个数据库 string strCon = Provider = Microsoft Jet OLEDB ; Data Source = sample mdb ; OleDbConnection myConn = new OleDbConnection ( strCon ) ; myConn Open ( ) ;

//从数据库中修改指定记录 string strUpdt = UPDATE books SET booktitle = + t_booktitle Text + bookauthor = + t_bookauthor Text + bookprice = + t_bookprice Text + bookstock = + t_bookstock Text + WHERE bookid = + t_bookid Text ;

OleDbCommand myCommand = new OleDbCommand ( strUpdt myConn ) ; myCommand ExecuteNonQuery ( ) ; myConn Close ( ) ; } catch ( Exception ed ) { MessageBox Show ( 修改指定记录错误 + ed ToString ( ) 错误! ) ; } myBind Position = i ; } // 尾记录 按钮对应的事件 protected void GoLast ( object sender System EventArgs e ) { myBind Position = myBind Count ; } // 下一条 按钮对应的事件 protected void GoNext ( object sender System EventArgs e ) { if ( myBind Position == myBind Count ) MessageBox Show ( 已经到尾记录! ) ; else myBind Position += ; } // 上一条 按钮对应的事件 protected void GoPrevious ( object sender System EventArgs e ) { if ( myBind Position == ) MessageBox Show ( 已经到首记录! ) ; else myBind Position = ; } // 首记录 按钮对应的事件 protected void GoFirst ( object sender System EventArgs e ) { myBind Position = ; } } 四 编译源程序代码 生成执行文件 得到了Data cs源程序代码以后 经过下面编译命令编译成功后 即可得到执行文件data exe csc /t:winexe /r:system windows forms dll /r:system data dll data cs

lishixinzhi/Article/program/net/201311/15222

上注册,才能使用程序。应该是别人打开程序以后d出一个注册的窗口,注册帐号就可以使用程序。如果是这样,我说一个简单的注册方法。

首先你要连接一个数据库,有access数据库,还有sql数据库。这比较复杂,简单的可以连接易语言自带的edb数据库,我给你说得就是edb数据库。下面便是连接edb数据库的例子。

打开易语言,找到上面第一行的数据库,点击,出现结构编辑器,记录编辑器等等,点击结构编辑器,d出一个新的数据库管理器,

在字段信息下面的名称一栏中输入“账号”在下面类型一栏选择“文本型”如果你希望输入的是数字可以选择“整数型”。点击保存,输入文件名“账号”,这样就完成名为“账号”的edb的数据库了。再到回到易语言界面,点击刚才说得上面第一行的数据库按钮d出的最下面的加入数据库常量,选择你刚才保存的“账号edb”数据库,这样就加入账号这个常量。

(如果你再想加密码,可以在字段“账号”后面再插入一个字段,选择“整数型”类型)。

下面是完成别人用你的程序时输入的账号时就是把账号写入到数据库,还有是验证别人是否已经注册过的代码。

建一个启动窗口,(你做的程序窗口放在启动窗口后面)加入一个编辑框一个按钮,把按钮命名为“注册”,双击启动窗口,在__启动窗口_创建完毕的子程序里加入代码:

打开

(取运行目录

()

“\账号edb”,

,

,

,

,

,

)

'

这是找到存放程序的文件夹里的“账号”数据库并打开这个数据库。

(当然你的程序和数据库要放在同一个文件夹里)

判断(到文本

(读

(#账号))

“”)

'

这是判断数据库“账号”这个字段是否为空,如果不为空,就是别人已经注册过了,那就不显示启动窗口让人注册了,直接载入你做的程序窗口。

载入

(窗口1,

,

假)

'

载入你做的程序窗口。

_启动窗口销毁

()

返回启动窗口界面,双击注册按钮输入代码:

如果

(编辑框1内容

“”)

信息框

(“你没有输入注册信息,请输入。”,

#警告图标,

“输入出错啦!”)

加空记录

()

'

这是往数据库尾部加入一条空记录,让人可以写入信息。

(#账号,

编辑框1内容)

'

这是把编辑框1的内容,,别人注册时输入的信息写入到数据库“账号”这个字段里。

到这里就完成了我想的注册方法,这里面也可以加入跟新删除注册信息的代码,但不知你有没有需要,我就没写出来。这是一个伪注册方法,至于真的注册验证,要做出注册机程序,输入使用者的电脑硬盘特征码,算出注册码,

别人可以真正注册,没有时间限制,但这不是你我几句话能说清楚的。但愿我的方法你能满意。

哦,你说自己注册的帐号要能登录上,什么意思,是否自己和别人同时注册?别人在使用的时,自己可以随时使用?如果是这样那还要写入一些代码,不好意思。太冷了受不了,下机了。如果是这样你可以追问一下,是否是这意思。

工具/材料:Management Studio。

1、首先在桌面上,点击“Management Studio”图标。

2、之后在该界面中,点击左上角“新建查询”选项。

3、接着在该界面中,输入清空所有数据库中所有表里的所有数据的sql语句“delete from (select table_name from information_schematables where table_schema='test') ”。

4、然后在该界面中,点击左上方“执行”按钮。

5、最后在该界面中,显示清空所有数据库中所有表里的所有数据成功。

以上就是关于数据库的删除是做成逻辑删除还是物理删除全部的内容,包括:数据库的删除是做成逻辑删除还是物理删除、如何对网站进行性能优化、用Visual C#来修改和删除数据库记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9739298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存