PALMisLIFE 討論區

搜索
鹹魚爸魅力四射舞蹈教室
查看: 2059|回復: 7

C#與MYSQL程式碼問題

[複製鏈接]

9

主題

1

好友

23

積分

該用戶從未簽到

文章
40
發表於 2011-6-6 16:57 |顯示全部樓層
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using MySql.Data.MySqlClient;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string data = string.Empty;

            //開啟rs232 Port (開啟COM1,鮑率為19200,同為檢查為元為沒有,位元率為8,停止位元數為1)
            SerialPort rs232 = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);

            
            //超過5秒鐘(5000毫秒)沒讀到東西,則丟出一個例外(TimeoutException)
            rs232.ReadTimeout = 5000;
            

            //開啟(建立)連線
            rs232.Open();

            while (true)
            {               
                try
                {
                    //由rs232讀入一個byte的資料
                    data = rs232.ReadLine();


                    Console.WriteLine(data.ToString());
                    string[] parameters = data.Split("-");  //假設你讀出來的資料是用"-"做分隔
                    Insert(parameters[0], parameters[1], parameters[2]); //這邊要帶入你前面所設定的參數

                    //將讀到的東西顯示出來
                    Console.WriteLine(data.ToString());
                }
            

                //如果讀到'q'則停止
              
            }

            //關閉rs232
            rs232.Close();
            
        }


        public int Insert(string Ohm, string Ampere, string volt)
        {
            //設定連線資訊  
            string connStr = String.Format("server=localhost;user id=root; password=123; database=test");

            MySqlConnection conn = new MySqlConnection(connStr);
            //sql字串  
            string sqlStr = "INSERT INTO tbl_test_copy (Ohm,Ampere,volt) VALUES (?Ohm,?Ampere,?volt)";

            try
            {
                conn.Open();
            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                switch (ex.Number)
                {
                    case 0:
                        Console.WriteLine("Can't Connect to test.");
                        break;
                    case 1045:
                        Console.WriteLine("Account or Password wrong.");
                        break;
                }
                return ex.Number;
            }

            MySqlCommand mySqlCmd = new MySqlCommand(sqlStr, conn);
            //加入參數  
            MySqlParameter[] parameters = new MySqlParameter[3];

            parameters[0] = new MySqlParameter("?Ohm", MySqlDbType.VarChar, 50);
            parameters[0].Value = Ohm;

            parameters[1] = new MySqlParameter("?Ampere", MySqlDbType.VarChar, 50);
            parameters[1].Value = Ampere;

            parameters[2] = new MySqlParameter("?volt", MySqlDbType.VarChar, 50);
            parameters[2].Value = volt;

            mySqlCmd.Parameters.AddRange(parameters);

            try
            {
                mySqlCmd.ExecuteNonQuery();

                return 0;
            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                return ex.Number;
            }
        }
   





    }
}


這是我寫的程式碼

想問一下!我的程式執行出來可以跑RS232顯示的部分

但是與資料庫的連結,沒有連結到

不知道是我的程式碼出了問題嗎??還是我有東西沒加到

不知道有沒有人可以幫我看一下...

68

主題

1

好友

416

積分

該用戶從未簽到

文章
410
發表於 2011-6-7 12:11 |顯示全部樓層
你把錯誤都try catch掉了,所以看不到錯誤訊息,先把try catch拿掉貼錯誤訊息出來看看吧!
順便附上table的結構看看。

點評

kc100639  好~~  發表於 2011-6-7 14:27
實力,決定排名的順序...
回復

使用道具 舉報

181

主題

5

好友

2509

積分

超敗家的白爛長笛手

  • TA的每日心情
    郁悶
    2013-4-6 01:41
  • 簽到天數: 4 天

    連續簽到: 1 天

    [LV.2]偶爾看看I

    文章
    2201
    發表於 2011-6-7 12:17 |顯示全部樓層
    本文章最後由 小賤健 於 2011-6-7 12:17 編輯

    由你的設定連線資訊裡得知,mysql 是安裝在本機,資料庫登入帳號 root,密碼 123。
    這些都有跟你的系統有符合嗎?

    點評

    kc100639  有符合~連線是可以的 只是要傳值進去好像就有問題  發表於 2011-6-7 14:26
    回復

    使用道具 舉報

    9

    主題

    1

    好友

    23

    積分

    該用戶從未簽到

    文章
    40
    發表於 2011-6-7 14:25 |顯示全部樓層
    本文章最後由 kc100639 於 2011-6-7 14:26 編輯


    //連接資料庫成功

            public int Insert(string Ohm, string Ampere, string volt)
            {
                String conString = "SERVER = localhost; DATABASE = test; User ID = root; PASSWORD = 123;";
                //取得MySQLConnection
                MySqlConnection conn = new MySqlConnection(conString);

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    conn.Open();


                string sqlStr = "INSERT INTO tbl_test (Ohm,Ampere,volt) VALUES (?Ohm,?Ampere,?volt)";

                MySqlCommand mySqlCmd = new MySqlCommand(sqlStr, conn);
                //加入參數  
                MySqlParameter[] parameters = new MySqlParameter[3];

                parameters[0] = new MySqlParameter("?Ohm", MySqlDbType.VarChar, 50);
                parameters[0].Value = Ohm;

                parameters[1] = new MySqlParameter("?Ampere", MySqlDbType.VarChar, 50);
                parameters[1].Value = Ampere;

                parameters[2] = new MySqlParameter("?volt", MySqlDbType.VarChar, 50);
                parameters[2].Value = volt;

                mySqlCmd.Parameters.AddRange(parameters);

                try
                {
                    mySqlCmd.ExecuteNonQuery();

                    return 0;
                }
                catch (MySql.Data.MySqlClient.MySqlException ex)
                {
                    return ex.Number;
                }
            }
       

    目前我測試的資料庫連結有成功
    但是insert資料的時候
    好像沒有寫進去
    資料庫沒有新增新的檔案



    kc100639 於 2011-6-7 14:27 補充以下內容:




    kc100639 於 2011-6-7 14:28 補充以下內容:

    這是結構的圖片
    回復

    使用道具 舉報

    68

    主題

    1

    好友

    416

    積分

    該用戶從未簽到

    文章
    410
    發表於 2011-6-7 15:57 |顯示全部樓層
    錯的地方是資料表名稱,在結構上看到的名稱是"test",在程式看到的卻是"tbl_test",
    再來就是,結構檔明明有五個欄位,且不允許空值(NULL),但是填入資料時卻又只有三個欄位,除非你的日期與時間有給預設值,要不然這樣一定會錯。

    點評

    kuanll  我指的是他程式有錯 string sqlStr = "INSERT INTO tbl_test (Ohm,Ampere,volt) VALUES (?Ohm,?Ampere,?volt)"; 資料表是test沒錯!  發表於 2011-6-8 13:50
    小賤健  咦?我看到的 dataTable 是 test 說XD  發表於 2011-6-7 16:10
    實力,決定排名的順序...
    回復

    使用道具 舉報

    181

    主題

    5

    好友

    2509

    積分

    超敗家的白爛長笛手

  • TA的每日心情
    郁悶
    2013-4-6 01:41
  • 簽到天數: 4 天

    連續簽到: 1 天

    [LV.2]偶爾看看I

    文章
    2201
    發表於 2011-6-7 16:07 |顯示全部樓層
    本文章最後由 小賤健 於 2011-6-7 16:08 編輯

    看到圖了,預設值的問題。
    date, time 兩個資料欄是設定成 可為 null。但程式並沒有特別指定,所以會新增失敗。
    你可以直接設定 date, time 兩欄的預設值為資料新增當時的時間。
    可以參考這裡,並注意你所使用的版本。用法有版法差異。

    這樣就不用改程式了

    點評

    kc100639  還是說我RS232傳進來的程式也有問題??  發表於 2011-6-7 16:29
    kc100639  我直接把DATA跟TIME刪除這樣測試加入還是不行耶  發表於 2011-6-7 16:28
    回復

    使用道具 舉報

    9

    主題

    1

    好友

    23

    積分

    該用戶從未簽到

    文章
    40
    發表於 2011-6-7 16:30 |顯示全部樓層
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO.Ports;

    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string str;

                //開啟rs232 Port (開啟COM1,鮑率為19200,同為檢查為元為沒有,位元率為8,停止位元數為1)
                SerialPort rs232 = new SerialPort("COM3", 19200, Parity.None, 8, StopBits.One);


                


                //開啟(建立)連線
                rs232.Open();

                while (true)
                {
                    //由鍵盤讀入一行字串
                    str = Console.ReadLine();

                    try
                    {
                        //將讀到的字串寫出去
                        rs232.WriteLine(str);
                    }
                   
                   

                    //如果輸入的是quit則停止
                   // if (str == "quit") break;
                }

                //關閉rs232
                rs232.Close();

            }
        }
    }

    這是我的傳輸端的程式
    回復

    使用道具 舉報

    9

    主題

    1

    好友

    23

    積分

    該用戶從未簽到

    文章
    40
    發表於 2011-6-9 04:10 |顯示全部樓層
    我終於找到問題點也解決了.....

    我可以insert了

    剩下RS232傳的值跟資料庫結合了

    結合完就可以讓資料庫接收了
    回復

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 免費註冊

    與站長聯繫| PALMisLIFE 掌上生活      下載:更快、更棒、更好玩

    GMT+8, 2024-3-29 22:18 , Processed in 0.072089 second(s), 32 queries , Gzip On.

    Powered by Discuz!

    © 2001-2012 Comsenz Inc. style by eisdl

    回頂部