我正在尝试将我的位图图像插入MySQL,但问题是位图不受支持。我的错误:“System.NotSupportedException:‘不支持参数类型位图;请参阅https://fl.vu/mysql-param-type.value:System.Drawing.Bitmap’”。MySQL中的图片数据类型是blob。我想知道是否应该更改数据类型?
我的按钮注册表
private void buttonRegister_Click(object sender, EventArgs e)
{
String email = textBoxEmail.Text;
String username = textBoxUsername.Text;
String password = textBoxPassword.Text;
String reTypepassword = textBoxReTypePassword.Text;
UsersClass user = new UsersClass();
System.Security.Cryptography.AesCryptoServiceProvider keyMaker = new System.Security.Cryptography.AesCryptoServiceProvider();
keyMaker.KeySize = 128;
keyMaker.BlockSize = 128;
keyMaker.GenerateKey();
byte[] build = keyMaker.Key;
String Key = Convert.ToBase64String(build);
//MessageBox.Show(Key);
string encryptPassword = user.EncryptString(Key, textBoxPassword.Text);
char[] v = encryptPassword.ToCharArray();
int c = 0;
Bitmap bm = new Bitmap(Image);
for (int w = 0; w < bm.Width; w++)
{
for (int h = 0; h < bm.Height; h++)
{
if (v.Length > c)
{
Color pixel = bm.GetPixel(w, h);
bm.SetPixel(w, h, Color.FromArgb(pixel.R, pixel.G, Convert.ToInt32(v[c])));
c++;
}
}
}
Color p = bm.GetPixel(Image.Width - 1, Image.Height - 1);
bm.SetPixel(Image.Width - 1, Image.Height - 1, Color.FromArgb(p.R, p.G, Convert.ToInt32(c)));
Image = (Image)bm;
imageBox.Image = Image;
myconn.openConnection();
if (password == reTypepassword)
{
MySqlCommand cmd = new MySqlCommand("insert into customer values(@id, @username, @email, @password, @Customer_Request,@location,@address,@key, @picture)", myconn.getConnection());
cmd.Parameters.Add(new MySqlParameter("@id", 0));
cmd.Parameters.Add(new MySqlParameter("@username", textBoxUsername.Text));
cmd.Parameters.Add(new MySqlParameter("@email", textBoxEmail.Text));
cmd.Parameters.Add(new MySqlParameter("@password", encryptPassword));
cmd.Parameters.Add(new MySqlParameter("@Customer_Request", ""));
cmd.Parameters.Add(new MySqlParameter("@location", ""));
cmd.Parameters.Add(new MySqlParameter("@address", textBoxAddress.Text));
cmd.Parameters.Add(new MySqlParameter("@key", Key));
cmd.Parameters.Add(new MySqlParameter("@picture", Image));
cmd.ExecuteNonQuery();
MessageBox.Show("Success to insert");
}
else
{
MessageBox.Show("Please enter the correct password");
}
}
这段代码将一个PNG文件(但也可能是另一种类型)写入数据库,并检索它,并将其存储到'test.PNG'。
using System.IO;
using MySql.Data.MySqlClient;
class Program
{
static void Main(string[] args)
{
string filename = @"D:/MySQL Server 8.0/Uploads/d95251abfa0f532b0b332906de4d3181b033b35e76319b807c4948df4fa5aa95.png";
string Server = "localhost";
string DatabaseName = "test";
string UserName = "test";
string Password = "test";
string connstring = string.Format("Server={0}; database={1}; UID={2}; password={3}", Server, DatabaseName, UserName, Password);
MySqlConnection conn = new MySqlConnection(connstring);
conn.Open();
string sql = "INSERT INTO pic VALUES(@idpic,@caption,@image)";
var cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@idpic",null);
cmd.Parameters.AddWithValue("@caption","test");
cmd.Parameters.AddWithValue("@image", File.ReadAllBytes(filename));
var result = cmd.ExecuteNonQuery();
var lastId = cmd.LastInsertedId;
Console.WriteLine($"Executing insert resulted in {result}, with idpic={lastId}");
sql = "SELECT img FROM pic WHERE idpic=@id";
cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@id", lastId);
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();
byte[] picture = (byte[])reader["img"];
File.WriteAllBytes(@"d:\temp\test.png", picture);
conn.Close();
}
}
MySQL表的创建如下:
CREATE TABLE `pic` (
`idpic` int unsigned NOT NULL AUTO_INCREMENT,
`caption` varchar(45) NOT NULL,
`img` longblob NOT NULL,
PRIMARY KEY(`idpic`)
) ENGINE=InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8mb4 COLLATE=utf8mb4_0900_ai_ci
至少有两个设置需要检查。
>
max_allowed_packet应设置为大于图片的最大文件大小。
secure_file_priv如果设置了此选项,则只能将指定目录中的文件插入到数据库中。
应向连接到数据库的用户授予文件访问权限
本文向大家介绍C#下listview如何插入图片,包括了C#下listview如何插入图片的使用技巧和注意事项,需要的朋友参考一下 如何在listview中插入图片,相信大家很想知道,下面就为大家分享具体步骤: 第一步:在窗体中拖入ListView控件和imageList控件; 第二步:设置imageList控件的Images属性,添加你想要的图片; 第三步:设置ListView控件的SmallI
问题内容: 我正在尝试创建字符串到字符串的映射。以下是我尝试过的方法,但两种方法均无效。它出什么问题了? 问题答案: 这里有两个问题。 首先,您不能像其他语言那样使用语法。方括号仅适用于Java中的数组,因此只能与整数索引一起使用。 是正确的,但这是一条语句,因此必须存在于方法块中。在类级别只能存在字段声明。这是一个示例,其中所有内容都在方法的本地范围内: 如果要将映射初始化为类的静态字段,则可以
PPT/Excel 中插入动态交互图表,需要使用Office应用商城插件。 1) 使用Office2013或以上版本创建一个PPT文档(Excel也可以) 2) 点击“插入”选项卡,再点击“应用商店”按钮打开商店窗口。 3) 在商店窗口中搜索“图表秀”,找到名为“图表秀-PPT动态展示”的外接程序,点击添加即可。 4) 以后再要使用此插件时只需点击“我的加载项”,即可找到并直接使用此插件了。 5)
问题内容: 另外,我希望此UITextView带有XXX.txt中的文本文件。它在iOS6中可以正常工作,但内容不会出现在iOS7的UIAlertview中。我的代码如下: 问题答案: 以下链接解决了我的问题,该链接为https://github.com/wimagguc/ios-custom- alertview 以下内容已解决 文字检视 表格检视 影像检视 UIWebView 两种功能对我
我试图在我的降价文件中插入一个图像,但它没有渲染。 我也尝试过使用绝对路径,但也没有成功。
问题内容: 假设我们有两个数组: 现在,我想在每个数组的第三个元素之后插入。我该怎么做? 问题答案: 可以用来提取数组的部分,联合数组运算符()可以重新组合部分。 这个例子: 给出: