依賴插件
**MySql.Data安裝 **
- 使用之前需要先在 vs中安裝MySql.Data 插件,本文采用 Nuget 方式安裝 ,步驟如下:
- **選中項目右鍵——》管理Nuget程序包 **
- 輸入 MySql.Data ,搜索安裝即可
編輯
連接數據庫的基本對象介紹
- MySqlConnection: 數據庫連接對象
- MySqlCommand: sql語句執行對象
- MySqlDataReader:包含sql語句執?的結果,并提供?個?法從結果中閱讀??
- MySqlTransaction: sql事務管理對象
- MySqlException: 報錯時返回的Exception。
- MySqlCommandBuilder:自動生成命令,該命令用于MySQL數據庫協調對數據集所做的更改
- MySqlDataAdapter: 表示一組數據命令和數據庫連接,用于填充數據集和更新MySQL數據庫
- MySqlHelper:提供幫助的工具類
sql執行方法
ExcuteNonQuery
: 執行【insert(增)】、【updata(改)】、【delete(刪)】語句ExcuteReader
: 執行多行查詢,返回DataReader對象ExcuteScalar
: 執行單行查詢,返回查詢結果的首行數據
DataTable和DataSet 容器
- 可以把DataTable和DataSet看做是數據容器,比如你查詢數據庫后得到一些結果,可以放到這種容器里
- **DataSet **可以比作一個內存中的數據庫
- **DataTable **是一個內存中的數據表
- DataSet 里可以存儲多個DataTable
- 數據結果 直接放到 dataTable中
DataTable dt = new DataTable();
MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn);
// 將數據填充到dataTable中
DataAdapter.Fill(dt);
- 數據結果 直接放到 dateSet 中
DataSet ds = new DataSet();
MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn);
// 將數據填充到dataSet中
DataAdapter.Fill(ds);
- ****數據結果放到dataset中,若要用那個datatable,可以這樣:dataset[0] ****
DataSet ds = new DataSet();
MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn);
// 將數據填充到dataSet中
DataAdapter.Fill(ds);
DataTable td = ds.Tables[0]
Mysql的增刪改查(CRUD)
創建Mysql連接
- 方式一: 通過 MySqlConnectionStringBuilder 對象
public MySqlConnection createConnect()
{
// 數據連接的基本信息對象
MySqlConnectionStringBuilder scsb = new MySqlConnectionStringBuilder();
scsb.UserID = "root";
scsb.Server = "127.0.0.1";
scsb.Port = 3306;
scsb.Password = "123456";
scsb.Database = "account_center";
MySqlConnection mySqlConnection = new MySqlConnection(scsb.ConnectionString);
mySqlConnection.Open();
Console.WriteLine("數據庫連接成功!");
return mySqlConnection;
}
- 方式二: 直接通過字符串,然后new MySqlConnection
public MySqlConnection createConnect2()
{
// 數據連接的基本信息對象
string conStr = "server=127.0.0.1;database=account_center;username=root;password=123456;";
MySqlConnection mySqlConnection = new MySqlConnection(conStr);
mySqlConnection.Open();
return mySqlConnection;
}
MySqlDataAdapter 方式
查詢數據表數據(無參數)
public void queryNoArg(MySqlConnection conn)
{
string sql = "select * from user_test ";
DataTable dt = new DataTable();
try
{
MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn);
// 將數據填充到dataTable中
DataAdapter.Fill(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// 關閉連接
conn.Close();
}
// 打印表數據
printData(dt);
}
打印數據方法
public void printData(DataTable dt)
{
if (dt.Rows.Count < 0)
{
return;
}
//打印所有列名
string columnName = string.Empty;
for (int i = 0; i < dt.Columns.Count; i++)
{
columnName += dt.Columns[i].ColumnName + " | ";
}
Console.WriteLine(columnName);
Console.WriteLine("-------------------------");
//打印每一行的數據
foreach (DataRow row in dt.Rows)
{
string columnStr = string.Empty;
foreach (DataColumn column in dt.Columns)
{
columnStr += row[column] + " | ";
}
Console.WriteLine(columnStr);
}
}
輸出結果
name | age | create_date |
-------------------------
張三 | 12 | 2023/1/4 17:17:24 |
李四 | 33 | 2023/1/4 17:17:24 |
查詢數據表數據(帶參數)
public void queryByArg(MySqlConnection conn)
{
string sql = "select * from user_test where name=@p1 and age=@p2 ";
DataTable dt = new DataTable();
try
{
// 建立命令執行對象
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = sql;
// 設置命令的類型,普通的sql命令是字符串的用Text即可 ,如果是存儲過程則用 CommandType.StoredProcedure
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@p1", "張三");
cmd.Parameters.AddWithValue("@p2", 12);
MySqlDataAdapter DataAdapter = new MySqlDataAdapter(cmd);
// 將數據填充到dataTable中
DataAdapter.Fill(dt);
// 釋放資源
DataAdapter.Dispose();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// 關閉連接
conn.Close();
}
// 打印表數據
printData(dt);
}
輸出結果
name | age | create_date |
-------------------------
張三 | 12 | 2023/1/4 17:17:24 |
MySqlDataReader 方式
查詢數據表數據
public void ExecuteReader(MySqlConnection connection)
{
string sql = "select * from user_test ";
MySqlCommand cmd = new MySqlCommand(sql, connection);
MySqlDataReader myReader = null;
try
{
myReader = cmd.ExecuteReader();
// 打印數據
printByReader(myReader);
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
connection.Close();
cmd.Dispose();
}
}
打印數據方法
public void printByReader(MySqlDataReader myReader)
{
if (myReader==null)
{
return;
}
//打印所有列名
string columnName = string.Empty;
for (int i = 0; i < myReader.FieldCount; i++)
{
columnName += myReader.GetName(i) + " | ";
}
Console.WriteLine(columnName);
Console.WriteLine("-------------------------");
//打印每一行的數據
while (myReader.Read())
{
string columnStr = string.Empty;
for (int i = 0; i < myReader.FieldCount; i++)
{
columnStr += myReader[i].ToString() + " | ";
}
Console.WriteLine(columnStr);
}
// 釋放資源
myReader.Close();
}
輸出結果
name | age | create_date |
-------------------------
張三 | 12 | 2023/1/4 17:17:24 |
李四 | 33 | 2023/1/4 17:17:24 |
修改表數據都用 ExecuteNonQuery() 方法
ExecuteNonQuery() 適用于 添加、修改、刪除 相關的sql操作
public int updateData(MySqlConnection conn)
{
// 添加數據
string addSql = "insert into user_test(name,age,create_date) values('王五',14,now())";
// 修改數據
string updateSql = "update user_test set age=55 where name='李四'";
// 刪除數據
string delSql = "delete from user_test where name = '張三'";
MySqlCommand cmd = new MySqlCommand(addSql, conn);
try
{
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (Exception e)
{
conn.Close();
//throw e;
Console.WriteLine(e.Message);
}
finally
{
cmd.Dispose();
conn.Close();
}
return -1;
}
數據庫事務(MySqlTransaction類)
事務執行過程:
- 開啟
- 提交 -- 正常
- 回滾 -- 出現問題
**事務管理 **
- BeginTransaction(): 開啟事務, 只要未提交,期間執行的數據更新相關的操作都不會生效
- transaction.Commit(): 提交事務,提交后,數據更新
- transaction.Rollback(): 回滾事務,回滾后,之前執行的數據更新操作都將失效
public void TransactionTest(MySqlConnection conn)
{
string sql = "insert into user_test(name,age,create_date) values('bbb',224,now())";
// 開啟事務
MySqlTransaction transaction = conn.BeginTransaction();
try
{
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
// 事務回滾
transaction.Rollback();
conn.Close();
}
finally
{
if (conn.State != ConnectionState.Closed)
{
//事務要么回滾要么提交,即Rollback()與Commit()只執行一個
transaction.Commit();
conn.Close();
}
}
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
Data
+關注
關注
0文章
62瀏覽量
38266 -
MySQL
+關注
關注
1文章
804瀏覽量
26530 -
插件
+關注
關注
0文章
326瀏覽量
22440
發布評論請先 登錄
相關推薦
如何在Rust中連接和使用MySQL數據庫
如何在Rust中連接和使用MySQL數據庫。 安裝 mysql 模塊 這里我們假設你已經安裝了Rust編程語言工具鏈,在本教程中,我們將使用 mys
labview連接mysql數據庫
=127.0.0.1;UID=root;DATABASE=mxjtest;PORT=3306";用以上語句為什么不行求解數據庫用戶root密碼100200就連自己電腦上的數據庫
發表于 10-09 14:44
labview 連接mysql 數據庫的問題
`我根據網絡上的教程想用labsql 做個連接mysql的vi,但是就是連接不上數據庫。(已經新建數據源DSN)求教下,字符串 3,4 是不
發表于 01-07 22:06
用JDBC連接MySQL數據庫并進行簡單的增刪改查操作
本文主要詳細講解了用JDBC連接MySQL數據庫并進行簡單的增刪改查操作。Java 數據庫連接是Java語言中用來規范客戶端程序如何來訪問
發表于 02-06 09:21
?6306次閱讀
評論