缘起 由于一些特别的原因,我再次短暂的回到 Windows ,回到了 VisualStudio2010 和 C# 。习惯了 Ubuntu/Linux 的快速高效的开发环境,对 Windows 下的开发工具的庞大臃肿反应慢既愤慨又无奈。由于不想使用和 VisaulStudio2010 相同的臃肿的开发环境,就使用
缘起
由于一些特别的原因,我再次短暂的回到Windows,回到了Visual Studio 2010和C#。习惯了Ubuntu/Linux的快速高效的开发环境,对Windows下的开发工具的庞大臃肿反应慢既愤慨又无奈。由于不想使用和Visaul Studio 2010相同的臃肿的开发环境,就使用C#+Mysql这个组合。以下是一些记录。
正文
连接数据库最重要是找到驱动程序,ODBC、JDBC是数据库连接的接口的标准,实现这些接口称为驱动程序。无论什么语言何种平台,都需要连接数据库都需要相应的驱动器。比如连接Mysql数据库,Java就需要Java的连接器,.NET就需要.NET的连接器,像Ruby这类的脚本程序也需要相应的数据库连接包。
关于在Windows下用C#开发应用程序,如果是ASP.NET+C#的话,没的选,只有Visual Studio;如果开发C#的WinForm程序或控制台程序,IDE可以选择SharpDevelop或者MonoDevelop,SharpDevelop的启动速度很快,几乎秒开,但SharpDevelop只适用Windows;MonoDevelop可以跨平台,可以在Windows或Linux下使用。
1. C#连接Mysql
关于C#连接数据库方法是使用Mysql官方的提供的connector-net的包,然后将其引用到项目中,这个方式可以适用与任何使用C#开发的程序,包括Visual Studio和MonoDevelop创建的项目。具体的操作步骤如下:
1.下载connector
Mysql的connector-net下载地址:http://dev.mysql.com/downloads/connector/net/
2014年5月份,最新的连接版本是:6.8.3,该包中含有的文件:
其中,Vx.0表示的是.NETFramework的版本号,根据项目使用的.NETFramework选择相应的目录下的Mysql.**.dll。
2.在项目中引用 mysql-connector-net包中的MySql.Data.dll(注意引用和项目使用框架相同的版本dll)
3.设置数据库连接字符串
字符串的样例如下:
Server=localhost;user id=root;password=localhost;Database=web;Port=3306;charset=utf8;
一般而言,这里需要修改的只有password和database,其他的都可以使用默认。
4.简单测试数据库连接的demo程序
using System; using System.Collections.Generic; using MySql.Data.MySqlClient;//引用Mysql.data.dll中的类 namespace testdb { class Program { static void Main(string[] args) { string query = "select * from t_user"; MySqlConnection myConnection = new MySqlConnection("server=localhost;user id=root;password=11;database=db_user"); MySqlCommand myCommand = new MySqlCommand(query, myConnection); myConnection.Open(); myCommand.ExecuteNonQuery(); MySqlDataReader myDataReader = myCommand.ExecuteReader(); string bookres = ""; while (myDataReader.Read() == true) { bookres += myDataReader["id"]; bookres += myDataReader["userName"]; bookres += myDataReader["password"]; } myDataReader.Close(); myConnection.Close(); Console.WriteLine(bookres); } } }
2. MySQLHelper辅助类
像上面的测试连接的样例中那样,每次都自己编写相应的连接之类的非常不方便,此时,可以考虑使用一个DBhelper这样的辅助类来减少重复代码。下面是一个简单的Dbheper辅助类:
public class MySQLHelper { private static string connectionString = ConfigurationManager.ConnectionStrings["mysqlconn"].ConnectionString; /// <summary> /// 执行查询语句,返回DataSet /// </summary> /// <param name="SQLString">查询语句 /// <returns>DataSet</returns> public static DataSet Query(string SQLString) { using (MySqlConnection connection = new MySqlConnection(connectionString)) { DataSet ds = new DataSet(); try { connection.Open(); MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection); command.Fill(ds); } catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); } finally { connection.Close(); } return ds; } } /// <summary> /// 执行SQL语句,返回影响的记录数 /// </summary> /// <param name="SQLString">SQL语句 /// <returns>影响的记录数</returns> public static int ExecuteSql(string SQLString) { using (MySqlConnection connection = new MySqlConnection(connectionString)) { using (MySqlCommand cmd = new MySqlCommand(SQLString, connection)) { try { connection.Open(); int rows = cmd.ExecuteNonQuery(); return rows; } catch (System.Data.SqlClient.SqlException e) { connection.Close(); throw e; } finally { cmd.Dispose(); connection.Close(); } } } } /// <summary> /// 执行SQL语句,返回影响的记录数 /// </summary> /// <param name="SQLString">SQL语句 /// <returns>影响的记录数</returns> public static int ExecuteSql(string[] arrSql) { using (MySqlConnection connection = new MySqlConnection(connectionString)) { try { connection.Open(); MySqlCommand cmdEncoding = new MySqlCommand(SET_ENCODING, connection); cmdEncoding.ExecuteNonQuery(); int rows = 0; foreach (string strN in arrSql) { using (MySqlCommand cmd = new MySqlCommand(strN, connection)) { rows += cmd.ExecuteNonQuery(); } } return rows; } catch (System.Data.SqlClient.SqlException e) { connection.Close(); throw e; } finally { connection.Close(); } } } }
备注:SQLserver代码改写成mysql很容易,由于二者格式几乎一样,而改写的部分也很少。
后记
再次回到Windows修改C#的WinForm程序,让我反思了一些问题,比如Rails到底能做到什么,桌面程序和web程序优缺点这类的问题,也算不错。不过,再次明白windows确实不是一个好的开发环境。
回想起来,自己当初在选择技术时,选择的是C#,为此花费了一年的时间来学习C#。后来,跟老师搞研究,转战Java,最后,在拥抱ubuntu一年后,选择了Rails和Ruby作为谋生的工具。这次,再次回到短暂的windows上,让我想到当初花了很长的时间学习,也应该积累了很多的经验,可惜的是都没有记下来,然后,就全忘光了。
参考文献
1..net mysql-connector-net连接mysql
2.asp.net连接Mysql(connector/net 5.0)

MySQL和SQLite的主要區別在於設計理念和使用場景:1.MySQL適用於大型應用和企業級解決方案,支持高性能和高並發;2.SQLite適合移動應用和桌面軟件,輕量級且易於嵌入。

MySQL中的索引是數據庫表中一列或多列的有序結構,用於加速數據檢索。 1)索引通過減少掃描數據量提升查詢速度。 2)B-Tree索引利用平衡樹結構,適合範圍查詢和排序。 3)創建索引使用CREATEINDEX語句,如CREATEINDEXidx_customer_idONorders(customer_id)。 4)複合索引可優化多列查詢,如CREATEINDEXidx_customer_orderONorders(customer_id,order_date)。 5)使用EXPLAIN分析查詢計劃,避

在MySQL中使用事務可以確保數據一致性。 1)通過STARTTRANSACTION開始事務,執行SQL操作後用COMMIT提交或ROLLBACK回滾。 2)使用SAVEPOINT可以設置保存點,允許部分回滾。 3)性能優化建議包括縮短事務時間、避免大規模查詢和合理使用隔離級別。

選擇PostgreSQL而非MySQL的場景包括:1)需要復雜查詢和高級SQL功能,2)要求嚴格的數據完整性和ACID遵從性,3)需要高級空間功能,4)處理大數據集時需要高性能。 PostgreSQL在這些方面表現出色,適合需要復雜數據處理和高數據完整性的項目。

MySQL數據庫的安全可以通過以下措施實現:1.用戶權限管理:通過CREATEUSER和GRANT命令嚴格控制訪問權限。 2.加密傳輸:配置SSL/TLS確保數據傳輸安全。 3.數據庫備份和恢復:使用mysqldump或mysqlpump定期備份數據。 4.高級安全策略:使用防火牆限制訪問,並啟用審計日誌記錄操作。 5.性能優化與最佳實踐:通過索引和查詢優化以及定期維護兼顧安全和性能。

如何有效監控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。 1.使用mysqladmin查看連接數。 2.用SHOWGLOBALSTATUS查看查詢數。 3.PMM提供詳細性能數據和圖形化界面。 4.MySQLEnterpriseMonitor提供豐富的監控功能和報警機制。

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显著差异,选择时需考虑项目规模和未来扩展性。

在需要高可用性、高級安全性和良好集成性的企業級應用場景下,應選擇SQLServer而不是MySQL。 1)SQLServer提供企業級功能,如高可用性和高級安全性。 2)它與微軟生態系統如VisualStudio和PowerBI緊密集成。 3)SQLServer在性能優化方面表現出色,支持內存優化表和列存儲索引。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境