c#中mysql远程连接方法及实例
//************************
c# 遠程連接數據庫方法
1、導入命名空間
? using System.Data.SqlClient; ?//連接SQLServer 數據庫專用
2、創建連接
? SqlConnection lo_conn = New SqlConnection("Server=服務器名字或IP;Database=數據庫名字;uid=用戶名;pwd=密碼");
3、打開連接,第2步并沒有真正連接數據庫
? lo_conn.Open(); ? ?//真正與數據庫連接
4、向數據庫發送SQL命令要使用SqlCommand:
? SqlCommand lo_cmd = new SqlCommand(); ? //創建命令對象
? lo_cmd.CommandText = "這里是SQL語句"; ? //寫SQL語句
? lo_cmd.Connection = lo_con; ? ? ? ? ? ? //指定連接對象,即上面創建的
5、處理SQL命令或返回結果集
? lo_cmd.ExecuteNonQuery(); ?//這個僅僅執行SQL命令,不返回結果集,實用于建表、批量更新等不需要返回結果的操作。
? SqlDataReader lo_reader = lo_cmd.ExecuteReader();//返回結果集
6、以數據集的方式反回結果集
? SqlDataAdapter dbAdapter = new SqlDataAdapter(lo_cmd); //注意與上面的區分開
? DataSet ds = new DataSet(); //創建數據集對象
? dbAdapter.Fill(ds); //用返回的結果集填充數據集,這個數據集可以被能操作數據的控件DataBind,其它的就自己發揮了吧
7、關閉連接
? lo_conn.Close();
//**********************************
C#連接云數據庫
1.寶塔面板放行數據庫默認3306端口:
2.設置數據庫權限-所有人或者指定ip,指定ip需要你本機的ip:
3.操作C#寫方法下的連接語句:
連接前導入引用:MySql.Data.dll (頂部有下載鏈接),不知道怎么導入,可以去我的另一篇博客
在頂部using一下:using MySql.Data.MySqlClient;
代碼如下:
using System;
using MySql.Data.MySqlClient;
namespace ConsoleApp1
{
? ? class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? String connetStr = "server=服務器主機ip;port=3306;user=數據庫用戶名;password=密碼;database=數據庫名;";
? ? ? ? ? ??
? ? ? ? ? ? MySqlConnection conn = new MySqlConnection(connetStr);
? ? ? ? ? ? try
? ? ? ? ? ? {
? ? ? ? ? ? ? ? conn.Open();//打開通道,建立連接
? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? Console.WriteLine("連接成功!");
? ? ? ? ? ? ? ? //在這里使用代碼對數據庫進行增刪查改
? ? ? ? ? ? ? ? Console.ReadKey(); //讓程序運行得到結果不終止
? ? ? ? ? ? }
? ? ? ? ? ? catch (MySqlException ex)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.WriteLine(ex.Message); ?//有異常,打印錯誤信息到控制臺
? ? ? ??
? ? ? ? ? ? }
? ? ? ? ? ? finally
? ? ? ? ? ? {
? ? ? ? ? ? ? ? conn.Close();
? ? ? ? ? ? }
? ? } ? }
}
//**************遠程連接問題解決
mysql Access denied for user 'root'@'localhost' (using password: YES)
【現象說明】
C/S程序遠程訪問正常,本地訪問報以下異常
MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'localhost' (using password: YES) ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Access denied for user 'root'@'localhost' (using password: YES)
配置文件如下:
<add name="RemoteConnString" connectionString="Database='mealbooker';Data Source='localhost';User Id='root';Password='123456';charset='gb2312';pooling=true" providerName="MySql.Data.MySqlClient"/>
【分析】
權限問題吧,查看下mysql數據庫中的user表
發現localhost下面值為空,于是connection string中的localhost 改為 127.0.0.1,測試通過~~~
【解決】
配置文件中改為localhost,訪問數據庫正常;同時mysql command line工具輸入密碼后一閃而過問題同時解決。
重啟之后又訪問不了,繼續上面的思路修改:
另,mysql command line工具一閃而過,方法參見這里
另一個權限相關問題:
Error Code: 1370 execute command denied to user 'root'@'localhost' for routine
使用grant execute on procedure/function dbname.fname TO 'root'@'localhost';
另一密碼相關問題(調試機放幾天后就沒法遠程訪問了,root密碼被改動,不明原因):
?Authentication to host '10.10.123.6' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'10.10.123.5' (using password: YES) ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Access denied for user 'root'@'10.10.123.5' (using password: YES)
修改password語句如下:
然后還要給遠程用戶非配權限
grant all privileges on *.* to?'root'@'%'?with grant option;
總結
以上是生活随笔為你收集整理的c#中mysql远程连接方法及实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JNDI 是什么
- 下一篇: linux cmake编译源码,linu