Prog.Hu
C# kép feltöltése MySQL-be picit egyszerűbben.
2013-09-05T07:12+02:00
Riha
RihaProg.Hu
regisztrált tag
2013-09-05T07:12+02:00
2009-06-06T21:27+02:00
2009-06-06T21:27+02:00
  • Ez a kód picit összekuszálódott, ezért ha még valakit érdekelne:


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    using System.IO;
    using MySql.Data.MySqlClient;
    using MySql.Data.Types;

    //http://google.com/codesearch/p?hl=en#f9cd8CGa5WU/MySql.Data/Tests/Source/BlobTests.cs&q=mysql%20insert%20image%20create%20table%20lang:c%23
    namespace Kepek
    {
        public partial class Form1 : Form
        {
            MySql.Data.MySqlClient.MySqlConnection conn;
            MySql.Data.MySqlClient.MySqlCommand cmd;
            string SQL;
            public Form1()
            {
                InitializeComponent();
                conn = new MySql.Data.MySqlClient.MySqlConnection();
                cmd = new MySql.Data.MySqlClient.MySqlCommand();
                //conn.ConnectionString = "server=127.0.0.1;uid=root;" + "pwd=mysql;database=test;";

            }

            private void button1_Click(object sender, EventArgs e)
            {
               
                //"Server=localhosr:3306;Database=Mydb;User ID=root;Password=xxxx;CharSet=utf8"
                //server=192.168.2.9;user id=kakuk;database=new_db1
                //MySqlConnection connection = new MySqlConnection(connBuilder.ConnectionString);
                conn = new MySqlConnection(ConnBild());
                MySqlCommand cmd = conn.CreateCommand();

                conn.Open();

                // Here goes the code needed to perform operations on the
                try
                {
                    SQL = "INSERT INTO kepek1 VALUES(?id, ?Neve, ?wKep1, ?wKep2)";
                    FileStream fs = new FileStream("D:\Beach_Plant.jpg", FileMode.Open, FileAccess.Read);
                    BinaryReader br = new BinaryReader(fs);
                    byte[] photo = br.ReadBytes((int)fs.Length);
                    br.Close();
                    fs.Close();
                    cmd.CommandText = SQL;
                    cmd.Parameters.AddWithValue("?id", 2);
                    cmd.Parameters.AddWithValue("?Neve", "Beach_Plant");
                    cmd.Parameters.AddWithValue("?wKep1", photo);
                    cmd.Parameters.AddWithValue("?wKep2", photo);
                    cmd.ExecuteNonQuery();

                    MessageBox.Show("Image Inserted into database successfully!",
                        "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                catch (MySql.Data.MySqlClient.MySqlException ex)
                {
                    MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message,
                        "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
        //conn.Close();
                // database such as querying or inserting rows into a table


                conn.Close();

            }
            //http://forums.mysql.com/read.php?38,70279,70486#msg-70486 <= insert/select image
            private void Form1_Load(object sender, EventArgs e)
            {

            }

            private void button2_Click(object sender, EventArgs e)
            {
               
                //"Server=localhosr:3306;Database=Mydb;User ID=root;Password=xxxx;CharSet=utf8"
                //server=192.168.2.9;user id=kakuk;database=new_db1
                //conn = new MySqlConnection(connBuilder.ConnectionString);
                conn = new MySqlConnection(ConnBild());

                MySqlCommand cmd = conn.CreateCommand();

                conn.Open();
                SQL = "SELECT Megnevezes,Kep1 FROM kepek1 WHERE Tid = 1";
                cmd.CommandText = SQL;
                MySqlDataReader reader;
                try
                {
                    reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        Image wkep = null;
                        if (reader["kep1"] != DBNull.Value)
                        {
                            MemoryStream ms = new MemoryStream((byte[])reader["kep1"]);
                            wkep = Image.FromStream(ms);
                            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                            pictureBox1.Image = wkep;
                        }
                        string wMegnevezes = reader["Megnevezes"] as string;
                        lblKep.Text = wMegnevezes;
                        reader.Close();


                    }
                    else
                        reader.Close();
                }
                catch (MySql.Data.MySqlClient.MySqlException ex)
                {
                    MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message,
                        "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                conn.Close();           
            }
            public  string ConnBild()
            {
                MySqlConnectionStringBuilder connBuilder =
                    new MySqlConnectionStringBuilder();
                connBuilder.Add("server", "192.168.2.9");
                connBuilder.Add("Database", "new_db1");
                //connBuilder.Add("Data Source", "localhost");
                connBuilder.Add("User Id", "kakuk");
                connBuilder.Add("Password", "kakuk");
                var connstr = connBuilder.ConnectionString;
                return connstr;
            }

            private void button3_Click(object sender, EventArgs e)
            {
                System.Reflection.Assembly thisExe;
                thisExe = System.Reflection.Assembly.GetExecutingAssembly();
                System.IO.Stream file =
                    thisExe.GetManifestResourceStream("Kepek.Beach_Plant.jpg");
                this.pictureBox1.Image = Image.FromStream(file);
               
        }
    }
    Mutasd a teljes hozzászólást!
  • hello!

    Elég régen írtad ezt a hozzászólást de hátha tudnál nekem segíteni.
    Igazából nem konkrétan a képfeltöltés érdekel hanem csak az hogy hogyan kell adatokat tölteni mysql-be C#-al.
    Félig meddig világos, de mikor INSERT INTO-t futtatok hibát ír ki. Valami olyasmit, hogy nem egyezik az oszlopszám.
    Tudnál segíteni?

    előre is köszi.

    üdv
    Zoli


    Bocsi! Közben megoldódott.

    Én voltam a hülye
    Mutasd a teljes hozzászólást!
  • Üdv. Mindenkinek!

    Hasonló címmel kreált topik volt nemrég a Tudástárban, de törlődött. Az okát nem tudom, de nem is bánom a törlést mert vak vezet világtalant kinézete volt az eseménynek. Szerettem volna segíteni a kérdés feltevőnek, de MySQL-beli járatlanságom sikertelenné tette ebéli igyekezetemet. Nulla ponttal záródott a topik, talán ezért is törlődött. Nem is zavart volna, ha nem piszkált volna a sikertelenség.
    Nekem a MySQL + C# fura együttes, nem tudom hol mire esélyes, ezért nem is foglalkoztam eddig véle, de most sarokba szorított a kíváncsiság. Nem kellett sokat küzdeni, MySQL server + SQL Manager Lite for MySQL letöltése, üzembehelyezése (külön gépen, hogy a távoli elérés is tesztelhető legyen).
    A segéddel aránylag könnyedén kreáltam egy adatbázist, azon belül egy táblát:

    CREATE TABLE `kepek1` (
      `Tid` int(11) NOT NULL,
      `Megnevezes` char(40) default NULL,
      `Kep1` mediumblob,
      `Kep2` longblob,
      PRIMARY KEY  (`Tid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    Majd egy usert a megfelelő jogokkal, a többi már a C# kenyere volt.

    C#-hoz mysql-connector-net-6.0.3 install, és jöhetett a kreálás.
    Eredetileg csupán a kép beolvasása és táblába insert-álása volt a feladat, de kibővítettem egy visszaolvasással és megjelenítéssel.
    Bocsi, a vérbeli C#-osoktól a laza formáért.
    a kód:


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    using System.IO;
    using MySql.Data.MySqlClient;
    using MySql.Data.Types;

    //http://google.com/codesearch/p?hl=en#f9cd8CGa5WU/MySql.Data/Tests/Source/BlobTests.cs&q=mysql%20insert%20image%20create%20table%20lang:c%23
    namespace Kepek
    {
        public partial class Form1 : Form
        {
            MySql.Data.MySqlClient.MySqlConnection conn;
            MySql.Data.MySqlClient.MySqlCommand cmd;
            string SQL;
            public Form1()
            {
                InitializeComponent();
                conn = new MySql.Data.MySqlClient.MySqlConnection();
                cmd = new MySql.Data.MySqlClient.MySqlCommand();
               
            }

            private void button1_Click(object sender, EventArgs e)
            {
                conn = new MySqlConnection(ConnBild());
                MySqlCommand cmd = conn.CreateCommand();

                conn.Open();

                try
                {
                    SQL = "INSERT INTO kepek1 VALUES(?id, ?Neve, ?wKep1, ?wKep2)";
                    FileStream fs = new FileStream("D:\\Beach_Plant.jpg", FileMode.Open, FileAccess.Read);
                    BinaryReader br = new BinaryReader(fs);
                    byte[] photo = br.ReadBytes((int)fs.Length);
                    br.Close();
                    fs.Close();
                    cmd.CommandText = SQL;
                    cmd.Parameters.AddWithValue("?id", 2);
                    cmd.Parameters.AddWithValue("?Neve", "Beach_Plant");
                    cmd.Parameters.AddWithValue("?wKep1", photo);
                    cmd.Parameters.AddWithValue("?wKep2", photo);
                    cmd.ExecuteNonQuery();

                    MessageBox.Show("Image Inserted into database successfully!",
                        "Success!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                catch (MySql.Data.MySqlClient.MySqlException ex)
                {
                    MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message,
                        "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                conn.Close();

            }
            //http://forums.mysql.com/read.php?38,70279,70486#msg-70486 <= insert/select image
            private void Form1_Load(object sender, EventArgs e)
            {

            }

            private void button2_Click(object sender, EventArgs e)
            {

                conn = new MySqlConnection(ConnBild());

                MySqlCommand cmd = conn.CreateCommand();

                conn.Open();
                SQL = "SELECT Megnevezes,Kep1 FROM kepek1 WHERE Tid = 1";
                cmd.CommandText = SQL;
                MySqlDataReader reader;
                try
                {
                    reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        Image wkep = null;
                        if (reader["kep1"] != DBNull.Value)
                        {
                            MemoryStream ms = new MemoryStream((byte[])reader["kep1"]);
                            wkep = Image.FromStream(ms);
                            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                            pictureBox1.Image = wkep;
                        }
                        string wMegnevezes = reader["Megnevezes"] as string;
                        lblKep.Text = wMegnevezes;
                        reader.Close();


                    }
                    else
                        reader.Close();
                }
                catch (MySql.Data.MySqlClient.MySqlException ex)
                {
                    MessageBox.Show("Error " + ex.Number + " has occurred: " + ex.Message,
                        "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                conn.Close();           
            }
            public  string ConnBild()
            {
                MySqlConnectionStringBuilder connBuilder =
                    new MySqlConnectionStringBuilder();
                connBuilder.Add("server", "999.999.999.9");
                connBuilder.Add("Database", "new_db1");
                connBuilder.Add("User Id", "kakukk");
                connBuilder.Add("Password", "kakkuk");
                var connstr = connBuilder.ConnectionString;
                return connstr;
            }
        }
    }

    Bizakodom, hogy mást is érdekel e téma, ezért merészkedtem közreadni e néhány sort. Bocs, ha tévednék..
    Mutasd a teljes hozzászólást!
    Csatolt állomány