C#連接mysql中文亂碼寫入資料庫"???" MySql.Data.dll

C# 使用 MySql.Data.dll 連結資料庫會有中文亂碼問題,主要是沒有連結字串內設定UTF-8。

只要將下列連結方式加入charset=utf8就可解決,C# 寫入mysql資料庫,就不會有亂碼如"????"的字符產生

將下行加入charset=utf8;

string myConnectionString = "server =192.168.xxx.xxx; Database=mydb;User Id=admin;Password=admin;charset=utf8;";

完整連結方式:

string myConnectionString = "server =192.168.xxx.xxx; Database=mydb;User Id=admin;Password=admin;charset=utf8;";
MySqlConnection DBConn = new MySqlConnection(myConnectionString);
DBConn.Open();
MySqlCommand cmd = new MySqlCommand("Insert into n5y91_hrsystem_schedule_test (xxx) values ('" + value +"')", DBConn);
try
{
    cmd.ExecuteNonQuery();
}
    catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

Heroku上免費的ClearDB MySQL託管服務資料庫設定教學影片

ClearDB 是Hero Add-ons app 部署的可選擇的附加入服務,ClearDB就是所謂的MySQL資料庫,通常會配合PHP的app一起使用。

ClearDB db

免費版本提供5MB的容量使用,對於初期測試開發還算夠用,當然免費版連線速度也是會有所限制,若使用好的話可以轉為訂閱。

IP遠端連接MySQL設定開啟防火牆MySQL預設3306 Port

MySQL一般情況下都是在主機上,使用root帳號密碼localhost做連結,如您使用root去遠端連結可能會出現"Host xxx is not allowed to connect to this MySQL server"這樣的錯誤訊息。需要遠端如IP去連結MySQL,你的主機開啟防火牆MySQL預設3306 Port,還有一組不屬於localhost端的帳號,預設root只能在localhost做連結。

以下圖中,在phpmyadmin設定一組帳號密碼,做為可以遠端連線的帳號,主機選擇"任意主機"%,全域權限全選。

macOS MySQL外連訪問端口3306連不上被擋被拒

客戶端外連訪問在Mac電腦中安裝的mysq失敗。

錯誤信息顯示:

[root@centos7 /]# mysql -hxxx.xxx.xxx.xxx -P3306 -uroot -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111)

分析可能原因:

  1. MySQL遠端登陸授權(已配置,因此排除,未配置可參考:遠端登陸授權MySQL
  2. 遠程訪問端口

MySQL Workbench Error Code:1175 錯誤解決方法

錯誤描述如下:

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

主要因為要updata或刪除資料時會有安全模式保護,必須在指令前加入以下設定開啟。

SET SQL_SAFE_UPDATES = 0;

MySQL開啟遠端連線權限允許遠端裝置連線資料庫

MySQL因為安全性root帳號,預設只允許localhost連線,想要遠端裝置連線本地端的資料庫,需要設置帳號權限修改為所有host均可訪問,如下指令。

update user set host = '%' where user = 'root';

以上是直接修改root權限的做法,還有第二種比較好的做法是,新增一個使用者,給予hoot均可訪問的權限'%',或使指定只能訪問指定某資料庫權限。

PHP使用SQLSRV連結MS SQL Server設定教學

這邊使用的是Windows主機安裝Xampp架設的Web Server環境,然而在其他的系統沒有嘗試使用過。

php sqlsrv安裝

  1. 首先安裝好xampp。這邊使用的版本為PHP 5.6.15。若想知道自己的php版本可以使用以下php函數方式查看。

    <?php
        phpinfo();
    ?>

SQL GROUP+MAX()函式找出重覆資料欄位最大值

sqlimages

如上述資料,我們分別要找出S001,亂馬客,2010/04/01、S002,造雨人,2010/03/01及S003,阿光,2010/05/01的資料! 因為要最大值,所以使用GROUP+MAX函式來處理!實際操作應用方法如下:

使用docker LaraDock搭建PHP環境

雖然這篇叫Docker環境搭建,但是是用了一個別人寫好的配置文件,為什麼要用別人寫好的呢?因為第一節省了我們學習的成本,類似一鍵安裝環境的東西。二節省了我們的構造docker和測試docker的時間。三也省略了我們在去寫額外的服務器配置。

這裡我選用LaraDock,因為它的容器多,不僅僅用來作web服務器。 LaraDock官網

如何MySQL SQL複製資料表copy table

sql要複製某個資料表有二步驟,首先要先建立LIKE複製一個,與原先資料表一樣的一個新的資料表,之後把原本的資料INSERT新增到剛建立的新資料表

建立新資料表 Create Table

CREATE TABLE new_table LIKE old_db.old_table;

複製資料 Copy Table

INSERT new_table SELECT * FROM old_db.old_table;

兩個Table欄位不對應方法

若兩個Table欄位名稱數量不一樣,INSERT資料的方式可參考下面範例,如old_table欄位id,需要新增至new_table欄位parent_id。注意在這個使用方法,如下INSERT(parent_id,employee_id,hi_premium,li_premium)四個欄位需要新增,SELECT就需要有四個欄位,不然會有錯誤訊息Column count doesn't match value count at row 1。(這邊指的是在寫sql語句時,本身兩個table欄位數量不一樣沒關係)

INSERT new_table (parent_id,employee_id,hi_premium,li_premium) 
SELECT id,employee_id,hi_premium,li_premium 
FROM old_db.old_table;

SQL查詢欄位新增括號報錯:需要特別注意SELECT後的欄位值,不需要包在括弧()內,會顯示的錯誤訊息如Operand should contain 1 column(s)

解決PHP json_encode() MySQL抓取中文字資料顯示空白、問號、null、亂碼問題

以下有兩種方法分別為mysqli_query與mysql_query連結資料庫的方式,然後使用json_encode()將資料庫轉為json資料格式呈現在網頁上。

MySQL json_encode()中文字空白頁面、問號符號、亂碼

主要嘗試抓取mysql資料碰到的大問題就是中文資料問題,一開始抓取資料,我使用的是自行用架設的XAMPP Server做測試,結果抓取資料時我一次SELECT * 所有的欄位,然後json_edcode(),結果頁面完全沒有任何的東西,空白頁面,測試之後SELECT 其中欄位,只有數值或英文的表單欄位,正常顯示。結果SELECT有中文欄位資料,就發現是空白頁面,大致上可以了解是中文json_encode()時無法出現。


© UCAMC. All rights reserved.
Powered by CITIAR.