将多个图像文件发送到mySQL

如何使用C#将多个jpg文件(如字节数组)发送到mySQL数据库?

我已经阅读并理解了如何将图像文件转换为字节数组,但我只能弄清楚如何将单个图像的方法作为一个blob用于mySQL。 我的应用程序要求用户上传至少2个图像文件,并允许最多10个,同时从多个textBox发送信息。 我尝试创建一个字节数组数组,但这不起作用。 当我在mySQL的INSERT字符串期间在特定索引处引用该数组时,它似乎只存储一个字节数组并引用该字节数组的索引而不是应该存储在该索引中的整个字节数组。 下面是一些显示我的尝试的代码:

///uploading the image and converting it to a byte array private void uploadButtonClick(object sender, RoutedEventArgs e) { chosenFileTextBox.Text = "No file chosen"; try { FileStream fs = new FileStream(imageFileNameArray[i], FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); imageFileArray = br.ReadBytes((int)fs.Length); ///Array of byte arrays imageArray[i] = imageFileArray; uploadedFilesTextBox.Text += imageFileSafeNameArray[i].ToString() + "\n"; 

创建插入字符串的尝试如下。 当我只发送一个字节数组时字符串工作,所以我改变了代码以尝试下面的2字节数组,没有运气:

  //open connection if (this.OpenConnection() == true) { //create command and assign the query and connection from the constructor try { MySqlCommand cmd = new MySqlCommand(query, connection); cmd.Parameters.Add("?_Date", MySqlDbType.VarChar).Value = dateString; cmd.Parameters.Add("?Sex", MySqlDbType.Text).Value = sexString; cmd.Parameters.Add("?FirstName", MySqlDbType.Text).Value = firstNameString; cmd.Parameters.Add("?LastName", MySqlDbType.Text).Value = lastNameString; cmd.Parameters.Add("?StageName", MySqlDbType.VarChar).Value = stageNameString; cmd.Parameters.Add("?Age", MySqlDbType.Text).Value = ageString; cmd.Parameters.Add("?Height", MySqlDbType.VarChar).Value = heightString; cmd.Parameters.Add("?weight", MySqlDbType.Text).Value = weightString; cmd.Parameters.Add("?Chest", MySqlDbType.Text).Value = chestString; cmd.Parameters.Add("?Waist", MySqlDbType.Text).Value = waistString; cmd.Parameters.Add("?Hips", MySqlDbType.Text).Value = hipsString; cmd.Parameters.Add("?Dress", MySqlDbType.Text).Value = dressString; cmd.Parameters.Add("?Shirt", MySqlDbType.Text).Value = shirtString; cmd.Parameters.Add("?Pants", MySqlDbType.VarChar).Value = pantsString; cmd.Parameters.Add("?Shoe", MySqlDbType.VarChar).Value = shoeString; cmd.Parameters.Add("?Email", MySqlDbType.VarChar).Value = emailString; cmd.Parameters.Add("?Phone", MySqlDbType.VarChar).Value = phoneString; cmd.Parameters.Add("?City", MySqlDbType.Text).Value = cityString; cmd.Parameters.Add("?_State", MySqlDbType.Text).Value = stateString; cmd.Parameters.Add("?Experience", MySqlDbType.VarChar).Value = experienceString; ///"?Image1" represents Image1 column. There are 10 columns, but for /// this example there are only 2. cmd.Parameters.Add("?Image1", MySqlDbType.Blob).Value = imageArray.GetValue(0); cmd.Parameters.Add("?Image2", MySqlDbType.Blob).Value = imageArray.GetValue(1); //Execute command cmd.ExecuteNonQuery(); //close connection this.CloseConnection(); MessageBox.Show("Connection Closed"); } 

您可能想要查看数据库结构。 在这种情况下,您可能需要多个图像列,或者最好将图像提取到一个单独的表中,以便每个“用户”可以拥有N个图像。

更改可能包括添加包含以下列的Images表:

int FK_UserID
blob图像
int ImageType

FK_UserID设置为userId,您可以拥有一个ImageType列,例如,对于个人资料照片,您可以使用ImageType 1等。
然后,在存储用户并知道其ID后,您可以在此表上单独insert