.NET PROGRAMMING C# DataTable tidak sama dengan select di Database (MYSQL)

   

Hallo guys, saya buat program memakai DataTable dengan logic berikut ini:

public static DataTable QueryToDataTable(string Query, MySqlConnection connection)
        {
            DataTable dt = new DataTable();
            try
            {
                connection.Open();
                MySqlCommand cmd = new MySqlCommand(Query, connection);
                dt.Load(cmd.ExecuteReader());
                dt.PrimaryKey = null;
                connection.Close();
            }
            catch (Exception Ex)
            {
                _Msg.MessageShow_Err(Ex.Message);
            }
            return dt;
        }

kemudian saya memiliki function di MySql :

CREATE DEFINER=`root`@`localhost` PROCEDURE `R002_PRINT`(IN _CODE VARCHAR ( 10 ))
BEGIN
SELECT
	A.A010, 
	A.A011,
	A.A012,
	CONCAT(A.A011,'/',A.A012) AS LOC,
	A.B004,
	CONCAT(B.F008,B.A016,' ( ',B.F009,B.A013,' )') AS CONV,
	IF(C.F013 = 'T', 'GROSIR', '') F013, 
	C.F011, 
	C.F012
FROM
	p01k003 AS A
	LEFT JOIN
	p01k004 AS B
	ON 
		A.A010 = B.A010
	LEFT JOIN
	p01k005 AS C
	ON 
		B.A010 = C.A010 AND
		B.A016 = C.A013 ORDER BY A.A010 ASC;
END

Kemudian saya panggil menggunakan c# :

DataTable _dt = _Class._dbapps.QueryToDataTable("CALL R002_PRINT('')", 
                new MySql.Data.MySqlClient.MySqlConnection(_Class._appsdata._koneksistring));

Hasilnya, ketika saya execute di Mysql & saya Execute di C# berbeda guys:

Ini karena ketika kita memakai datatable akan membuat otomatis primarykey pada field A010, maka saya merubah cara membaca datatable nya menjadi:

public static DataTable QueryToDataTable(string Query, MySqlConnection connection)
        {
            DataTable dt = new DataTable();
            try
            {
                connection.Open();
                MySqlDataAdapter mySqlDataAdapter = new MySqlDataAdapter();
                MySqlCommand cmd = new MySqlCommand(Query, connection);
                DataSet dataSet = new DataSet();
                mySqlDataAdapter.SelectCommand = cmd;
                mySqlDataAdapter.Fill(dataSet);
                //dt.PrimaryKey = null;
                //dt.Load(cmd.ExecuteReader(), LoadOption.Upsert);
                dt = dataSet.Tables[0];
                connection.Close();
            }
            catch (Exception Ex)
            {
                _Msg.MessageShow_Err(Ex.Message);
            }
            return dt;
        }

Hasil akhirnya adalah:

Semoga membantu ya guys.

   

Wahyu Amaldi, M.Kom has written 178 articles

Hallo Pembaca,
Saya merupakan konsultan di dunia SAP dan merupakan Spesialis .Net Programming.
Saya gemar berbagi pengalaman mengenai SAP & Dunia Programming, dan jika ada sesuatu yang perlu ditanyakan, bisa hubungi saya di email berikut ini:

Email 1 : wahyu.amaldi@outlook.com
Email 2 : wahyu.amaldi@ilmuprogram.com

Semoga Artikel yang Anda baca di website ini berguna dan dapat membantu Anda dalam menemukan solusi.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>