给你个最详细的吧 可能有你要的内容 锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读 A...
专注于为中小企业提供网站建设、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业复兴免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
mdf这个文件根本不存在,你路径写错误了
要不然就是这个文件正被其他程序占用着,SQL SERVER 无法访问
public void ToImg(Image img, String name) //插入图片
{
#region 上传文件办法
//FileStream fs = new FileStream(Application.StartupPath+@"/gy.gif", FileMode.Open, FileAccess.Read);
//BinaryReader br = new BinaryReader(fs);
//byte[] photo = br.ReadBytes((int)fs.Length);
// br.Close();
//fs.Close();
#endregion
//把图片转换成二进制
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] photo = ms.GetBuffer();
ms.Close();
//存储字段
OleDbCommand cmd = new OleDbCommand("INSERT INTO 下单表(订票人, 识别码) VALUES(@CategoryName,@Picture)", conn);
cmd.Parameters.Add("@CategoryName", OleDbType.VarChar, 15).Value = name;
cmd.Parameters.Add("@Picture", OleDbType.Binary, photo.Length).Value = photo;
cmd.ExecuteNonQuery();
}
public void Pix(PictureBox px, String name) //显示图片
{
String sql = "Select 识别码 from 下单表 where 订票人='" + name + "'";
byte[] imagebytes = null;
OleDbCommand com = new OleDbCommand(sql, conn);
OleDbDataReader dr = com.ExecuteReader();
while (dr.Read())
{
imagebytes = (byte[])dr.GetValue(0);
}
MemoryStream ms = new MemoryStream(imagebytes);
Bitmap bmpt = new Bitmap(ms);
px.Image = bmpt;
px.SizeMode = PictureBoxSizeMode.StretchImage;
}
这是数据库读取和存储图片的方法,至于遍历文件夹,你自己找下例子吧,我是个懒人,太无聊的事情不做
为什么要引入锁
多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:
丢失更新
A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统
脏读
A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致
不可重复读
A用户读取数据,随后B用户读出该数据并修改,此时A用户再读取数据时发现前后两次的值不一致
并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些操作以避免产生数据不一致