vs2022中連接MySQL
1.連接MYSQL
2.添加MySQL的引用
環(huán)境配置
測(cè)試代碼
在vs里面運(yùn)行sql語(yǔ)句
啟動(dòng)vs2022,在菜單欄里面選擇視圖,打開服務(wù)器資源管理器
?
右鍵數(shù)據(jù)連接,點(diǎn)擊添加連接
然后發(fā)現(xiàn)有MySQL選項(xiàng),進(jìn)入里面配置數(shù)據(jù)庫(kù)的相關(guān)信息即可
配置信息
1.server name輸入MySQL的IP地址
localhost即本地
2.然后輸入MySQL的用戶名和密碼
3.Database的內(nèi)容輸入test
?添加MySQL的引用
環(huán)境配置
(1)打開mysql的安裝包,查看是否有include和lib兩個(gè)文件
?(2)打開vs2020,新建工程,保存工程文件路徑
(3)將mysql的lib和include文件添加到工程路徑下
?
?(4)打開VC++目錄,在包含目錄中,將mysql安裝文件中的include文件的路徑添加到包含目錄
?
(5)還在屬性頁(yè)上,打開?C/C++
?
(6)還是在屬性頁(yè)上,點(diǎn)開鏈接器選項(xiàng),點(diǎn)擊常規(guī),將mysql安裝文件夾中的lib文件路徑添加到附加庫(kù)目錄中:
(7)還是在屬性頁(yè)的鏈接器中,點(diǎn)擊第二項(xiàng)輸入,將libmysql.lib文件加進(jìn)來(lái),注意,這里直接把libmysql.lib這個(gè)依賴名加進(jìn)xing,不要加路徑。這個(gè)文件也在mysql安裝文件夾中l(wèi)ib目錄下:
?(8)將libmysql.dll放到該文件夾下
測(cè)試代碼
#include?<stdio.h>
#include?<WinSock.h>
#include?<Windows.h>
#include?<mysql.h>
#include<iostream>
using?namespace?std;
MYSQL?mysql;??//mysql連接
MYSQL_RES*?res;?//一個(gè)結(jié)果集結(jié)構(gòu)體???
MYSQL_ROW?row;?//char**?二維數(shù)組,存放一條條記錄??
const?char?DataBase_UserName[]?=?"root";????//數(shù)據(jù)庫(kù)用戶名username
const?char?DataBase_Password[]?=?"@";???//數(shù)據(jù)庫(kù)密碼,填自己的密碼
const?char?DataBase_Host[]?=?"localhost";??//數(shù)據(jù)庫(kù)連接地址
//注意有時(shí)候使用主機(jī)ip會(huì)報(bào)錯(cuò),此時(shí)可以將ip改為localhost
const?char?DataBase_Name[]?=?"test_db";??//database?name
unsigned?int?DataBase_Port?=?3306;????????????//server?port
bool?ConnectDatabase();?//函數(shù)申明
void?FreeConnect();???//釋放資源
void?main()
{
ConnectDatabase(); //連接數(shù)據(jù)庫(kù)
//查詢數(shù)據(jù)
//選擇該數(shù)據(jù)庫(kù)中的一個(gè)表的所有數(shù)據(jù)?sheet8?是一個(gè)數(shù)據(jù)表
mysql_query(&mysql,?"SELECT?*?from?sheet8");?
//獲取結(jié)果集
res?=?mysql_store_result(&mysql);
//顯示數(shù)據(jù)
//給ROW賦值,判斷ROW是否為空,不為空就打印數(shù)據(jù)。
while?(row?=?mysql_fetch_row(res))
{
printf("%s?",?row[0]);//打印ID
printf("%s?",?row[1]);//打印ID
cout?<<?endl;
}
getchar();
}
bool?ConnectDatabase()
{
//初始化mysql
mysql_init(&mysql);???//連接mysql,數(shù)據(jù)庫(kù)
if?(!(mysql_real_connect(&mysql,?DataBase_Host,?DataBase_UserName,?DataBase_Password,?DataBase_Name,?DataBase_Port,?NULL,?0)))?//中間分別是主機(jī),用戶名,密碼,數(shù)據(jù)庫(kù)名,端口號(hào)(可以寫默認(rèn)0或者3306等),可以先寫成參數(shù)再傳進(jìn)去
{
printf("Error?connecting?to?database:%s\n",?mysql_error(&mysql));
return?false;
}
else
{
MessageBoxA(NULL,?"連接MYSQL數(shù)據(jù)成功!",?"消息",?MB_OK);
printf("Connected...\n");
return?true;
}
}
//釋放資源
void?FreeConnect()
{
//釋放資源
//mysql_free_result(res);
mysql_close(&mysql);
}
?使用DataGridView控件顯示數(shù)據(jù)庫(kù)中的數(shù)據(jù)
核心代碼
private?void?AllSearch_Load(object?sender,?EventArgs?e)
{
????????MySqlConnection?conn;
????????string?constr?=?"server=localhost;database=data;uid=choujieyun;pwd=12345678;";
????????conn?=?new?MySqlConnection(constr);
????????conn.Open();
?
????????MySqlCommand?co?=?new?MySqlCommand("select?*?from?表名;",?conn);
?
?
????????MySqlDataAdapter?adapt?=?new?MySqlDataAdapter();
?
????????adapt.SelectCommand?=?co;
?
????????DataSet?ds?=?new?DataSet();
?
????????adapt.Fill(ds,?"學(xué)生表");? ??
?
????????dataGridView1.DataSource?=?ds.Tables["學(xué)生表"];
? ? ? ? DataSet?ds?=?new?DataSet();
?
????????adapt.Fill(ds,?"課程表");?
? ? ? ??dataGridView1.DataSource?=?ds.Tables["課程表"];
? ? ? ?? DataSet?ds?=?new?DataSet();
?
????????adapt.Fill(ds,?"教師表");?
? ? ? ? dataGridView1.DataSource?=?ds.Tables["教師表"];
? ? ? ?? DataSet?ds?=?new?DataSet();
?
????????adapt.Fill(ds,?"成績(jī)表");?
? ? ? ? dataGridView1.DataSource?=?ds.Tables["成績(jī)表"];
????????conn.Close();
}
1.學(xué)生表
?2.課程表
3.教師表
?
?4.成績(jī)表
?
實(shí)現(xiàn)基本的crud操作?
核心代碼:
//引入的命名空間
using?System.Data.SqlClient;//用于SQL?Sever數(shù)據(jù)訪問的命名空間
using?System.Data;???????????????//DataSet類的命名空間
using?System.Windows.Forms;??//DataGridView控件類的命名空間
//數(shù)據(jù)庫(kù)查詢
//執(zhí)行指定的SQL命令語(yǔ)句(insert,delete,update等),并返回命令所影響的行數(shù)
public?static?int?executeCommand(string?sqlStr)
{
????SqlConnection?sqlConnection1?=?new?SqlConnection("server=dell-PC;database=11071312HotelSys;uid=sa;pwd=xiaoyi9421");//創(chuàng)建數(shù)據(jù)庫(kù)連接(字符串中是我個(gè)人的數(shù)據(jù)庫(kù)信息)
????sqlConnection1.Open();??????//打開數(shù)據(jù)庫(kù)連接
????SqlCommand?sqlCommand1?=?new?SqlCommand(sqlStr,?sqlConnection1);??//執(zhí)行SQL命令
????int?Succnum?=?sqlCommand1.ExecuteNonQuery();
????return?Succnum;
}
//查詢(select)指定的數(shù)據(jù)記錄(多行多列),并填充到數(shù)據(jù)控件DataGridView中
public?static?void?queryDataToGrid(string?sqlStr,?DataGridView?dataGridView1)
{
????SqlConnection?sqlConnection1?=?new?SqlConnection("server=dell-PC;database=11071312HotelSys;uid=sa;pwd=xiaoyi9421");//創(chuàng)建數(shù)據(jù)庫(kù)連接
????SqlDataAdapter?sqlDataAdapter1?=?new?SqlDataAdapter(sqlStr,?sqlConnection1);//利用已創(chuàng)建好的sqlConnection1,創(chuàng)建數(shù)據(jù)適配器sqlDataAdapter1
????DataSet?dataSet1?=?new?DataSet();??//創(chuàng)建數(shù)據(jù)集對(duì)象
????sqlDataAdapter1.Fill(dataSet1);????//執(zhí)行查詢,查詢的結(jié)果存放在數(shù)據(jù)集里
????dataGridView1.DataSource?=?dataSet1.Tables[0];?//把數(shù)據(jù)集中的查詢結(jié)果綁定dataGridView1中
}
//查詢(select)指定的數(shù)據(jù)(單個(gè)數(shù)據(jù),假設(shè)為string類型),并返回
public?static?string?queryData(string?sqlStr)
{
????SqlConnection?sqlConnection1?=?new?SqlConnection("server=dell-PC;database=11071312HotelSys;uid=sa;pwd=xiaoyi9421");//創(chuàng)建數(shù)據(jù)庫(kù)連接
????SqlDataAdapter?sqlDataAdapter1?=?new?SqlDataAdapter(sqlStr,?sqlConnection1);//利用已創(chuàng)建好的sqlConnection1,創(chuàng)建數(shù)據(jù)適配器sqlDataAdapter1
????DataSet?dataSet1?=?new?DataSet();??//創(chuàng)建數(shù)據(jù)集對(duì)象
????sqlDataAdapter1.Fill(dataSet1);????//執(zhí)行查詢,查詢的結(jié)果存放在數(shù)據(jù)集里
????return?dataSet1.Tables[0].Rows[0]["列名"].ToString();?//把查詢結(jié)果的第一行指定列下的數(shù)據(jù)以string類型返回
}
//數(shù)據(jù)庫(kù)添加
private?void?btn_add_Click(object?sender,?EventArgs?e)
????????{
????????????string?sql?=?"insert?into?課程表(CourseId,CourseName,Teald)?values(‘0004’,‘物理’,‘0004’);
????????????????int?i=help.changeSqlData(sql);
????????????if?(i?==?0)?MessageBox.Show("添加失敗",?"提示:");
????????????else?MessageBox.Show("添加成功",?"提示:");
????????}
//數(shù)據(jù)庫(kù)刪除
private?void?btn_delete_Click(object?sender,?EventArgs?e)
? ? ? ? {
????????????string?sql?=?"delete?from 學(xué)生表?where StuId='0008';
????????????int?i=help.changeSqlData(sql);
????????????if?(i?==?0)?MessageBox.Show("刪除失敗",?"提示:");
????????????else?MessageBox.Show("刪除成功",?"提示:");
????????}
//數(shù)據(jù)庫(kù)修改
private?void?btn_update_Click(object?sender,?EventArgs?e)
? ? ? ? {
????????????string?sql?=?"update 學(xué)生表?set StuAge="19" where StuId="0008";
????????????int?i?=?help.changeSqlData(sql);
????????????if?(i?==?0)?MessageBox.Show("修改失敗",?"提示:");
????????????else?MessageBox.Show("修改成功",?"提示:");
????????}
?
增加一行數(shù)據(jù)(課程表中增加一行數(shù)據(jù))
刪除一行數(shù)據(jù)(刪除學(xué)生表中的一行數(shù)據(jù))?
?
修改一條數(shù)據(jù)(將學(xué)生表中的一條數(shù)據(jù)修改)
?
?
查詢某一條數(shù)據(jù)(查詢成績(jī)表中學(xué)號(hào)為0005的同學(xué)的成績(jī))
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-490172.html
?實(shí)驗(yàn)總結(jié):
本次實(shí)驗(yàn)通過使用C#連接數(shù)據(jù)庫(kù)MySQL,并且使用控件dataGridView控件顯示表中的數(shù)據(jù),實(shí)現(xiàn)基本的增刪改查等數(shù)據(jù)庫(kù)操作,在本次實(shí)驗(yàn)連接數(shù)據(jù)庫(kù)操作的過程中出現(xiàn)vs2022無(wú)法添加MySQL數(shù)據(jù)庫(kù)的問題,最后在網(wǎng)上找到解決方案,添加數(shù)據(jù)庫(kù)成功,在進(jìn)行數(shù)據(jù)的增刪改查的操作時(shí),也出現(xiàn)了數(shù)據(jù)庫(kù)的報(bào)錯(cuò),無(wú)法執(zhí)行操作,導(dǎo)致無(wú)法呈現(xiàn)正確的結(jié)果,在經(jīng)過一番代碼的修改,調(diào)式后終于正常顯示結(jié)果。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-490172.html
到了這里,關(guān)于VS2022連接數(shù)據(jù)庫(kù)MySQL,并進(jìn)行基本的表的操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!