C#做图片插入数据库 出现挂起的异步操作,程序无法执行 在线求救

学渣进阶 2020-04-24 04:55:58
图片插入数据库代码如下,



private void pictureBox1_Click(object sender, EventArgs e)
{
OpenFileDialog openFile = new OpenFileDialog();
openFile.Filter = "图片文件(*.jpg)|*.jpg";

string filePath="" ;
if (openFile.ShowDialog() == DialogResult.OK)
{
filePath = openFile.FileName;

this.pictureBox1.ImageLocation = filePath;


//打开文件流,用来读取文件中的数据
FileStream Stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);

byte[] bf = new byte[Stream.Length];
Stream.Read(bf, 0, (int)Stream.Length);
Stream.Close();

try
{
String MyConn = "Data Source=.; Initial Catalog=ShuangXuan; User ID = ; Pwd = "; // 连接字符串

SqlConnection MyConnection = new SqlConnection(MyConn); //创建连接对象

MyConnection.Open(); //打开连接

string getid = GDMU_SX.Index.userid;

//string strName = Path.GetFileName(filePath);

//string sql = "update dbo.Students set Picture= '@Picture' where ID="+getid+"";

//Console.Write(sql);

//MessageBox.Show(sql);

SqlCommand cmd = new SqlCommand("update_Picture", MyConnection);

cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = getid;
cmd.Parameters.Add("@Picture", SqlDbType.Image).Value = bf;

cmd.CommandType = CommandType.StoredProcedure;

//cmd.Parameters.Add("@Ext",SqlDbType.VarChar).Value= strName;

//SqlParameter img = new SqlParameter("@Picture", SqlDbType.Image);
//img.Value = bf;
//cmd.Parameters.Add(img);

cmd.BeginExecuteNonQuery();

int result = cmd.ExecuteNonQuery();

if (result > 0)
{
MessageBox.Show("插入成功!!!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("插入失败!!!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

MyConnection.Close();


}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}




存储过程图如下:
Create procedure [dbo].[update_Picture]

@ID varchar(50),
@Picture image

as

update dbo.Students set Picture = @Picture
where ID=@ID





出现问题如下:.

弹出消息框显示 :命令执行无法继续,因为正在处理一个挂起的异步操作

并且数据库没有相应的插入数据
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ying1234 2020-04-24
  • 打赏
  • 举报
回复
cmd.BeginExecuteNonQuery() 总是和cmd.EndExecuteNonQuery成对出现的,
ying1234 2020-04-24
  • 打赏
  • 举报
回复
cmd.BeginExecuteNonQuery() 这是异步查询操作,需要在回调函数通过cmd.EndExecuteNonQuery来处理查询结果 int result = cmd.ExecuteNonQuery();这是同步操作。 你自已去百度cmd.BeginExecuteNonQuery()吧,例子多的是,看几个就明白了
学渣进阶 2020-04-24
  • 打赏
  • 举报
回复
引用 1 楼 杀马特丶蛮牛 的回复:
cmd.BeginExecuteNonQuery(); int result = cmd.ExecuteNonQuery(); 去掉上面那个看看
成了,您这方法可以 能说说是为什么吗 为什么不需要这句cmd.BeginExecuteNonQuery(); 期待您的回复!回复后结贴谢谢
杀马特丶蛮牛 2020-04-24
  • 打赏
  • 举报
回复
cmd.BeginExecuteNonQuery(); int result = cmd.ExecuteNonQuery(); 去掉上面那个看看
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧