【问题标题】:Saving image in sql database C#将图像保存在sql数据库C#中
【发布时间】:2015-08-13 06:17:42
【问题描述】:

当用户选择图像时,我想将图像保存在 SQL 数据库中。到目前为止,我已经输入了这段代码。这不会给我任何错误,但不会添加到数据库中。 我认为 SQL 语句有问题。

有人可以帮我吗?

这是我的代码:

public void addImages(string tag1,string tag2,string tag3,string status,string fileName)
{
    try
    {
        byte[] image = null;
        FileStream fsstream = new FileStream(fileName,FileMode.Open,FileAccess.Read);
        BinaryReader br = new BinaryReader(fsstream);
        image = br.ReadBytes((int)fsstream.Length);

        SqlCommand command = new SqlCommand("INSERT INTO [ImagesAndTags] (Images,Tags,Tag2,Tag3,Status) values (@IMG,'" + tag1 + "','" + tag2 + "','" + tag3 + "','" + status + "')", con);
        con.Open();
        command.Parameters.Add(new SqlParameter("@IMG",image));
        SqlDataReader reader = command.ExecuteReader();
        MessageBox.Show("Added Successfully!!!", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
        while (reader.Read()) { }
    }
    catch(Exception ex) { }
}

【问题讨论】:

    标签: c# sql-server image bytearray sql-insert


    【解决方案1】:

    ExecuteReader 返回数据。在你的情况下,你不是。您只需尝试在数据库中插入一行。这就是为什么你需要改用ExecuteNonQuery

    并像对 image 变量所做的那样参数化您的其他插入值。也可以使用using statement 来处理你的数据库连接和命令。

    int insertedRowCount = command.ExecuteNonQuery();
    
    if(insertedRowCount > 0)
       MessageBox.Show("Added Successfully!!!", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
    

    【讨论】:

      【解决方案2】:

      从您存储在数据库中的 DATA 中删除所有反斜杠、单引号和双引号。

      用一些常量字符串替换它,并在再次检索时将其转换为原始字符串。

      【讨论】:

      • 嗯,什么?如果您认为他必须对转义数据进行编码,那您就错了。一方面,使用参数化查询可以为他解决这个问题。另一方面,他传入了一个字节数组(不是字符串),因此此时没有处理字符(数据库上的类型是什么,我们不知道)。
      猜你喜欢
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 2020-06-01
      • 2011-02-20
      • 2011-02-02
      • 1970-01-01
      相关资源
      最近更新 更多