C# mysql 使用 Byte[] 将文件插入数据库

Posted

技术标签:

【中文标题】C# mysql 使用 Byte[] 将文件插入数据库【英文标题】:C# mysql insert file into database using Byte[] 【发布时间】:2012-12-18 19:04:08 【问题描述】:

我正在 AsyncUpload 集合中执行一个简单的 foreach 循环到 Byte[] 并尝试将其插入数据库。

 foreach (UploadedFile file in AsyncUpload1.UploadedFiles)
        

            string[] splitFileExt = file.FileName.Split('.');
            List<string> CommandArgs = new List<string>();
            CommandArgs.Add("IID|" + Request.QueryString["InstructorID"]);
            CommandArgs.Add("FName|" + file.FileName);
            CommandArgs.Add("FTitle|" + file.FileName);
            CommandArgs.Add("FType|" + file.ContentType);
            CommandArgs.Add("FExtension|" + splitFileExt[1]);
            CommandArgs.Add("FSize|" + file.ContentLength.ToString());
            byte[] b = StaticControlCreationClass.ReadToEnd(file.InputStream);
            mysqlProcessing.MySQLProcessor.MySQL_UploadFile(b, "fileupload", CommandArgs, mysqlCon);

        



public static void MySQL_UploadFile(byte[] value, string MYSQLCommand, List<string> CommandArgs, MySqlConnection con)
    
        MySqlCommand cmd = new MySqlCommand(MYSQLCommand, con);
        cmd.Parameters.AddWithValue("FContent", value);
        foreach (string args in CommandArgs)
        
            string[] splitArgs = args.Split('|');
            cmd.Parameters.AddWithValue(splitArgs[0], splitArgs[1].Trim());
        
        cmd.ExecuteNonQuery();

    

然后这里是存储过程

如果存在文件上传,则删除程序; 创建过程文件上传`( IID 整数, TValue varchar(250), FName varchar(250), FType varchar(15), FSize varchar(45), FContent longblob, FExtension varchar(10)) 开始 SET @IID = IID; SET @TValue = TValue; SET @FName = FName; SET @FType = FType; 设置@FSize = FSize; SET @FExtension = FExtension; SET @FContent = FContent; 插入到 tblfiles(rID, 标题, 文件名, 文件类型, 文件大小, 文件_内容, 文件扩展名) 值(@IID, @T值, @F名称, @F类型, @FS大小, @F内容, @FExtension); 结尾

我不断收到You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'fileupload' at line 1@cmd.ExecuteNonQuery();

感谢任何帮助。

【问题讨论】:

【参考方案1】:

我错过了分类器说它是一个存储过程

cmd.CommandType = CommandType.StoredProcedure;

【讨论】:

以上是关于C# mysql 使用 Byte[] 将文件插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 将 byte[] 保存到 SQL Server 数据库中

在 C# 中有效地将数据插入 MySQL 中的多个表中

使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)

我无法使用 C# 添加数据以访问 2007,任何人都可以帮助我吗?

如何使用 C# 在列有日期的情况下将多行插入 MySql?

可以将 Byte[] 数组写入 C# 中的文件吗?