c# 向MySQL添加數(shù)據(jù)的兩種方法
下面介紹兩種執(zhí)行SQL命令的方法,并作出相應(yīng)地總結(jié),第一種介紹一種常規(guī)用法,下面進(jìn)行做簡(jiǎn)要地分析,首先我們需要執(zhí)行打開(kāi)數(shù)據(jù)庫(kù)操作首先創(chuàng)建一個(gè)MySqlConnection對(duì)象,在其構(gòu)造函數(shù)中傳入一個(gè)連接字符串,然后執(zhí)行Open操作打開(kāi)數(shù)據(jù)庫(kù),在正確打開(kāi)數(shù)據(jù)庫(kù)之后我們才能進(jìn)行相關(guān)的動(dòng)作,在ExecuteSQL這個(gè)函數(shù)中,
我們執(zhí)行MySqlCommand myCmd = new MySqlCommand(CmdString, conn),從而創(chuàng)建MySqlCommand對(duì)象,其中傳入的兩個(gè)參數(shù)分別為sql命令和第一步建立的MySqlConnection對(duì)象,然后執(zhí)行int Cmd = myCmd.ExecuteNonQuery()這一句執(zhí)行相應(yīng)的命令,并返回受影響的行數(shù),最后我們需要關(guān)閉數(shù)據(jù)庫(kù)連接,并釋放非托管資源,從而完成整個(gè)數(shù)據(jù)庫(kù)操作的過(guò)程;這個(gè)是比較常規(guī)的一種做法,也是我們使用比較多的一種形式。
public class DataBaseMySqlHelper{ string connstr; MySqlConnection conn; //Server=xxxxxxx;Database=xxxxxxx;Uid=xxxxxxx;Pwd=xxxxxxx;CharSet=gbk; //Server=xxx.xx.xxx.xx;Database=MSUP;Uid=dvision;Pwd=dvision;Port=xxxx;allow zero datetime = true; MainWindow _MainWindow; public DataBaseMySqlHelper(MainWindow mainWindow) {_MainWindow = mainWindow; connstr = _MainWindow._ConfigInfo.MySqlConnectionStrings; } public DataBaseMySqlHelper(MainWindow mainWindow, string connectionString) {_MainWindow = mainWindow;connstr = connectionString; } /// <summary> /// 打開(kāi)數(shù)據(jù)庫(kù)連接 /// </summary> void Open() {try{ conn = new MySqlConnection(connstr); conn.Open();}catch (Exception ex){ System.Windows.Forms.MessageBox.Show(ex.Message);} } /// <summary> /// 關(guān)閉數(shù)據(jù)庫(kù)連接 /// </summary> void Close() {conn.Close(); } /// <summary> /// 返回影響數(shù)據(jù)庫(kù)的行數(shù)/// </summary> /// <param name='CmdString'></param> /// <returns></returns> public int ExecuteSQL(string CmdString) {try{ Open(); MySqlCommand myCmd = new MySqlCommand(CmdString, conn); int Cmd = myCmd.ExecuteNonQuery(); Close(); return Cmd;}catch (Exception ex){ _MainWindow.ShowErrorMessage(' MySql數(shù)據(jù)庫(kù)查詢失敗!'); return 0;} } /// <summary> /// 返回?cái)?shù)據(jù)表 /// </summary> /// <param name='CmdString'></param> /// <returns></returns> public DataTable GetDataTable(string CmdString) {try{ Open(); DataSet myDs = new DataSet(); MySqlDataAdapter myDa = new MySqlDataAdapter(); myDa.SelectCommand = new MySqlCommand(CmdString, conn); myDa.Fill(myDs); Close(); return myDs.Tables[0];}catch (Exception e){ _MainWindow.ShowErrorMessage(' MySql數(shù)據(jù)庫(kù)查詢失敗!'); return null;} }}
第二種方式,這里也貼出關(guān)鍵代碼并做簡(jiǎn)要的分析:這里的關(guān)鍵是MySqlParameter[]數(shù)組的使用,我們?cè)趫?zhí)行SQL語(yǔ)句的時(shí)候 DbHelperMySQL.ExecuteSql(strSql.ToString(),parameters);這里的parameters就是MySqlParameter[]數(shù)組,里面存儲(chǔ)的是每個(gè)字段的數(shù)據(jù),我們將在下面的代碼中展示parameters的內(nèi)容,
/// <summary>/// 增加一條數(shù)據(jù)/// </summary>public void Add(Maticsoft.Model.cameradetail model){ StringBuilder strSql=new StringBuilder(); strSql.Append('insert into cameradetail_gis('); strSql.Append('EncodeDeviceUsername,MatrixIP,EncodeDevicePassword,id,Name,DisplayName,Location,Longitude,Latitude,CameraActive,ServerID,ForwardSvrIP,ForwardSvrPort,EncodeDeviceIP,EncodeDevicePort,CameraType,CameraModel,DeviceChannel,MatrixPort,MatrixChannelNum,VideoStoreServerIP,VideoStoreServerPort,VideoStoreServerUserID,VideoStoreServerPassword,EncodeDeviceModelNum,EncodeDeviceModelName,CameraInstallAddress,CameraStatus)'); strSql.Append(' values ('); strSql.Append('@EncodeDeviceUsername,@MatrixIP,@EncodeDevicePassword,@id,@Name,@DisplayName,@Location,@Longitude,@Latitude,@CameraActive,@ServerID,@ForwardSvrIP,@ForwardSvrPort,@EncodeDeviceIP,@EncodeDevicePort,@CameraType,@CameraModel,@DeviceChannel,@MatrixPort,@MatrixChannelNum,@VideoStoreServerIP,@VideoStoreServerPort,@VideoStoreServerUserID,@VideoStoreServerPassword,@EncodeDeviceModelNum,@EncodeDeviceModelName,@CameraInstallAddress,@CameraStatus)'); MySqlParameter[] parameters = { new MySqlParameter('@EncodeDeviceUsername', MySqlDbType.VarChar,64), new MySqlParameter('@MatrixIP', MySqlDbType.VarChar,16), new MySqlParameter('@EncodeDevicePassword', MySqlDbType.VarChar,64), new MySqlParameter('@id', MySqlDbType.VarChar,14), new MySqlParameter('@Name', MySqlDbType.VarChar,100), new MySqlParameter('@DisplayName', MySqlDbType.VarChar,100), new MySqlParameter('@Location', My
相關(guān)文章:
1. Mybatis 如何批量刪除數(shù)據(jù)的實(shí)現(xiàn)示例2. 幫你解決Oracle 9i和Tomcat的端口沖突3. Mysql5.7定時(shí)備份的實(shí)現(xiàn)4. 初學(xué)者必讀:Oracle監(jiān)聽(tīng)口令及監(jiān)聽(tīng)器安全5. 在ORACLE里用存儲(chǔ)過(guò)程定期分割表6. MySQL 函數(shù)索引的優(yōu)化方案7. 如何在Oracle里用存儲(chǔ)過(guò)程定期分割表8. Oracle 數(shù)據(jù)庫(kù)唯一約束中的NULL的處理9. mysql時(shí)間相減如何獲取秒值10. 獲取SQL Server元數(shù)據(jù)的幾種方法
