日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Winform中使用Mysql.Data.dll实现连接Mysql数据库并执行sql语句(排除ddl等非法语句的执行)

發布時間:2025/3/19 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Winform中使用Mysql.Data.dll实现连接Mysql数据库并执行sql语句(排除ddl等非法语句的执行) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景

Winform中連接Mysql8并查詢表中數據進行顯示:

Winform中連接Mysql8并查詢表中數據進行顯示_BADAO_LIUMANG_QIZHI的博客-CSDN博客

與上面實現的流程類似,怎么在連接mysql的基礎上實現執行查詢、編輯、刪除、插入操作的sql。

但是不能執行"drop", "drop database" , "drop table" , "truncate", "alter","rename" , "create"等這些dll語句。

同上面一樣,項目中引入Mysql.Data.dll依賴并設計窗體布局如下

注:

博客:
BADAO_LIUMANG_QIZHI的博客_霸道流氓氣質_CSDN博客-C#,SpringBoot,架構之路領域博主
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

1、聲明變量獲取數據庫連接的相關參數

??????? string connetStr = String.Empty;MySqlConnection mySqlConnection = null;String hostaddress = String.Empty;String port = String.Empty;String databaseName = String.Empty;String name = String.Empty;String pass = String.Empty;private MySqlCommand dbCmd = null;private MySqlDataReader dbDataReader = null;

2、連接按鈕的點擊事件

??????? private void button_connect_Click(object sender, EventArgs e){hostaddress = this.textBox_host.Text.Trim();databaseName = this.textBox_database.Text.Trim();name = this.textBox_username.Text.Trim();pass = this.textBox_password.Text.Trim();port = this.textBox_port.Text.Trim();connetStr = "server=" + hostaddress + ";port="+ port+";User Id=" + name + ";password=" + pass + ";database=" + databaseName; //localhost不支持ssl連接時,最后一句一定要加!!!mySqlConnection = new MySqlConnection(connetStr);try{mySqlConnection.Open(); //連接數據庫MessageBox.Show("數據庫連接成功", "提示", MessageBoxButtons.OK);}catch (MySqlException ex){MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK);???? //顯示錯誤信息}}

連接數據庫效果

2、執行新增、編輯、刪除的sql的按鈕的點擊事件

??????? private void button_executeSql_Click(object sender, EventArgs e){string searchStr = this.textBox_sql.Text.Trim();if (String.IsNullOrEmpty(this.textBox_sql.Text)){MessageBox.Show("執行sql為空");???????????}else if (!badaoHelper.checkSql(searchStr)){MessageBox.Show("執行sql不被允許");}else if (mySqlConnection.State == ConnectionState.Closed) {MessageBox.Show("請先建立數據庫連接");}else {try {dbCmd = new MySqlCommand();dbCmd.CommandText = searchStr;dbCmd.Connection = mySqlConnection;int result = dbCmd.ExecuteNonQuery();if (result > 0){MessageBox.Show("sql執行成功,數據庫連接關閉,受影響的行數:" + result);mySqlConnection.Close();}else {MessageBox.Show("sql執行失敗,數據庫連接關閉,受影響的行數:" + result);mySqlConnection.Close();}}catch (Exception ex) {mySqlConnection.Close();MessageBox.Show("sql執行失敗,數據庫連接關閉,報錯信息:" + ex.Message);}}}

執行sql的效果

這其中用到了校驗是否包含指定sql的工具類方法checkSql

??????? public static bool checkSql(string sql){bool isRight = true;string[] notAllowKeyWords = { "drop", "drop database" , "drop table" , "truncate", "alter","rename" , "create" };for (int i = 0; i < notAllowKeyWords.Length; i++){string arr = notAllowKeyWords[i];if (sql.ToLower().Contains(arr.ToLower())) {isRight = false;}}return isRight;}

3、執行查詢sql的執行按鈕的點擊事件

??????? private void button_sql_query_Click(object sender, EventArgs e){string searchStr = this.textBox_sql_query.Text.Trim();if (String.IsNullOrEmpty(searchStr)){MessageBox.Show("執行sql為空");} else if (!badaoHelper.checkSql(searchStr)) {MessageBox.Show("執行sql不被允許");}else if (mySqlConnection.State == ConnectionState.Closed){MessageBox.Show("請先建立數據庫連接");}else{try{MySqlDataAdapter adapter = new MySqlDataAdapter(searchStr, mySqlConnection);DataSet dataSet = new DataSet();adapter.Fill(dataSet, "table1");this.dataGridView_select.DataSource = dataSet.Tables["table1"];}catch (Exception ex){MessageBox.Show("報錯信息:" + ex.Message);}}}

執行查詢sql的效果

4、完整示例代碼

using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace BdtdDataUpload {public partial class Main : Form{string connetStr = String.Empty;MySqlConnection mySqlConnection = null;String hostaddress = String.Empty;String port = String.Empty;String databaseName = String.Empty;String name = String.Empty;String pass = String.Empty;private MySqlCommand dbCmd = null;private MySqlDataReader dbDataReader = null;public Main(){InitializeComponent();}private void button_connect_Click(object sender, EventArgs e){hostaddress = this.textBox_host.Text.Trim();databaseName = this.textBox_database.Text.Trim();name = this.textBox_username.Text.Trim();pass = this.textBox_password.Text.Trim();port = this.textBox_port.Text.Trim();connetStr = "server=" + hostaddress + ";port="+ port+";User Id=" + name + ";password=" + pass + ";database=" + databaseName; //localhost不支持ssl連接時,最后一句一定要加!!!mySqlConnection = new MySqlConnection(connetStr);try{mySqlConnection.Open(); //連接數據庫MessageBox.Show("數據庫連接成功", "提示", MessageBoxButtons.OK);}catch (MySqlException ex){MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK);???? //顯示錯誤信息}}private void button_disconnect_Click(object sender, EventArgs e){if (mySqlConnection.State == ConnectionState.Open) {mySqlConnection.Close();}}private void button_executeSql_Click(object sender, EventArgs e){string searchStr = this.textBox_sql.Text.Trim();if (String.IsNullOrEmpty(this.textBox_sql.Text)){MessageBox.Show("執行sql為空");???????????}else if (!badaoHelper.checkSql(searchStr)){MessageBox.Show("執行sql不被允許");}else if (mySqlConnection.State == ConnectionState.Closed) {MessageBox.Show("請先建立數據庫連接");}else {try {dbCmd = new MySqlCommand();dbCmd.CommandText = searchStr;dbCmd.Connection = mySqlConnection;int result = dbCmd.ExecuteNonQuery();if (result > 0){MessageBox.Show("sql執行成功,數據庫連接關閉,受影響的行數:" + result);mySqlConnection.Close();}else {MessageBox.Show("sql執行失敗,數據庫連接關閉,受影響的行數:" + result);mySqlConnection.Close();}}catch (Exception ex) {mySqlConnection.Close();MessageBox.Show("sql執行失敗,數據庫連接關閉,報錯信息:" + ex.Message);}}}private void button_sql_query_Click(object sender, EventArgs e){string searchStr = this.textBox_sql_query.Text.Trim();if (String.IsNullOrEmpty(searchStr)){MessageBox.Show("執行sql為空");} else if (!badaoHelper.checkSql(searchStr)) {MessageBox.Show("執行sql不被允許");}else if (mySqlConnection.State == ConnectionState.Closed){MessageBox.Show("請先建立數據庫連接");}else{try{MySqlDataAdapter adapter = new MySqlDataAdapter(searchStr, mySqlConnection);DataSet dataSet = new DataSet();adapter.Fill(dataSet, "table1");this.dataGridView_select.DataSource = dataSet.Tables["table1"];}catch (Exception ex){MessageBox.Show("報錯信息:" + ex.Message);}}}} }

總結

以上是生活随笔為你收集整理的Winform中使用Mysql.Data.dll实现连接Mysql数据库并执行sql语句(排除ddl等非法语句的执行)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品视频久久久久 | 欧洲精品久久久久毛片完整版 | 潮见百合子| 怡红院成人在线 | 不卡的日韩av | 久久免费看少妇高潮v片特黄 | 亚洲va天堂va欧美ⅴa在线 | 337p粉嫩色噜噜噜大肥臀 | 天堂一区在线观看 | 波多野结衣中文字幕在线 | 国产女主播喷水视频在线观看 | 好吊日免费视频 | 精品一区二区免费视频 | 亚洲图区欧美 | 超碰成人免费 | 精品久久福利 | 国产99999| 99999av| 东京热无码av一区二区 | 美丽的姑娘观看在线播放 | 日本免费网址 | 欧美色图在线视频 | 一级黄色录像大片 | 中文字幕高清视频 | 水蜜桃亚洲精品 | 三度诱惑免费版电影在线观看 | 国产又粗又长又大视频 | 丰满熟女人妻一区二区三 | 麻豆网站入口 | 天天干天天操天天爽 | 免费一区二区三区视频在线 | 天堂国产一区二区三区 | 黄页视频在线免费观看 | 99精品国产99久久久久久97 | 在线观看免费人成视频 | 污网站免费看 | 婷婷久久一区 | 日本三级精品 | 天堂av2014| 亚洲国产无码久久 | 精品视频91 | 日韩av不卡一区 | 精品电影一区二区 | 久久e热| 天天婷婷| 国内毛片毛片毛片 | 日本欧美不卡 | 福利一区在线观看 | 亚洲男人的天堂网站 | 污污视频在线免费观看 | 91久久久久久久久久久 | 国精产品乱码一区一区三区四区 | 日韩影视一区二区三区 | 精品少妇一区二区三区免费观看 | 闺蜜张开腿让我爽了一夜 | av一卡二卡 | 天天干天天操天天摸 | 99精品成人 | 久久久国产高清 | 国产乱淫精品一区二区三区毛片 | 黑丝美女一区二区 | 日韩一区二区三区在线看 | 91福利视频在线观看 | 久久久久黄 | 三上悠亚一区二区在线观看 | 91久久精品无码一区二区 | 欧美日韩aa| 国产香蕉网| 1000部多毛熟女毛茸茸 | 欧美日韩在线播放三区四区 | 潮喷失禁大喷水无码 | 1000部拍拍拍18勿入免费视频 | 国产精品呻吟 | 欧美人体做爰大胆视频 | 欧美三级视频网站 | 国产白丝在线观看 | 国产精品自拍网站 | 国产亚洲三级 | 91成人观看 | 欧美一级片免费在线观看 | 久久这里有精品 | 天堂成人在线 | 少妇性bbb搡bbb爽爽爽欧美 | 亚洲天堂资源 | 五月深爱网 | 午夜精品视频在线观看 | 免费观看一区二区三区毛片 | 17c精品麻豆一区二区免费 | 国产乱了高清露脸对白 | 欧美一区久久 | 国产视频一区二区三区在线 | 免费av在线电影 | 日本狠狠操 | 日韩中文字幕在线观看视频 | 激情午夜天 | 国产精品免费av | 天天尻 | 横恋母在线观看 | 超色视频|