資料庫應用開發一、vs
今天資料庫實驗是“掌握資料庫應用開發的一般方法”,開發環境是vs(我這裡用的是19版)
一、準備
- 操作環境:win7以上
- DBMS:MySQL 5.5
- 開發環境:vs19(12及以上都可以)
二、建立工程專案
新建工程後預設模板
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using MySql.Data.MySqlClient;
namespace LiwkerApp
{
class Program
{
static void Main(string[] args)
{
}
}
}
後面就不多說了,一定要先匯入程式包,再安裝
三、實驗
1.隨機查詢一個學生
static void Main(string[] args)
{
//定義好功能函式後,在main呼叫
//show();
//delOne();
//Find();
//showAll();
//addOne1();
}
程式碼
//顯示學生的函式
static void show()
{
// 定義一個連線到資料庫的字串
// 這裡連線的是本地伺服器(localhost),登入使用者名稱是root,有密碼就加
string conStr = "server=localhost;user=root;database=Liwker;password=1110";
// 定義一個資料庫連線物件con,可以理解它是連線程式連線資料庫的通道
// 這裡表明用上面的連線串來建立與目標資料庫的連線
MySqlConnection con = new MySqlConnection(conStr);
// 連線到資料庫,即通常所說的開啟資料庫
// 注意如果執行時在這裡報錯,要麼是伺服器沒啟動
// 要麼就是前面的 conStr中的連線資訊寫錯了!
con.Open();
// 定義一個S0L命令物件,用於儲存給伺服器傳送的SQL命令及引數等資訊
MySqlCommand cmd = new MySqlCommand();
// 該SQL命令物件通過con連線到我們的資料庫
cmd.Connection = con;
// 該SQL命令物件將向伺服器傳送命令字串,當然可以使用儲存過程等其它型別
cmd.CommandType = System.Data.CommandType.Text;
// 編制將要執行的SQL命令,這裡命令的功能是隨機取回一名學生的姓名和性別
cmd.CommandText = "select * from student order by rand() limit 1;";
// 定義一個基於cmd的資料介面卡,它專用於接收cmd命令執行後的結果
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
// 定義一個資料集,相當於表的集合, 用於接收SQL命令物件執行後的結果
DataSet ds = new DataSet();
// 用介面卡執行命令來填充ds資料集,即將取回的資料裝入ds
adapter.Fill(ds); // 這個方法是有返回值的,返回裝入的行數
// 前面的SQL命令成功取回 學生的資訊後會放入ds的tables[0]表的rows[0]行
// 沒有的話,則tables[0]表的rows的行數為0
if (ds.Tables[0].Rows.Count > 0)
{
System.Console.WriteLine("學號: {0}", ds.Tables[0].Rows[0]["學號"]);
// 顯示返回的姓名
System.Console.WriteLine("姓名: {0}", ds.Tables[0].Rows[0]["姓名"]);
// 顯示返回的性別
System.Console.WriteLine("性別: {0}", ds.Tables[0].Rows[0]["性別"]);
System.Console.WriteLine("年齡: {0}", ds.Tables[0].Rows[0]["年齡"]);
System.Console.WriteLine("系別: {0}", ds.Tables[0].Rows[0]["系別"]);
}
else
{
System.Console.WriteLine("目前還沒有學生!");
}
// 命令用完了,記得關閉連線,以便伺服器更好地為其它連線服務
con.Close();
}
結果
2.刪除學生
程式碼
// 通過學號刪除一個學生
static void delOne()
{
string who; // 儲存查詢的學號
Console.Write("刪除者學號:"); //輸出提示資訊
who = Console.ReadLine(); //接受鍵盤輸入
// 任何資料庫操作,其連線資料庫以及SQL命令的準備都是一樣的,所以可以直接用下面的
string conStr = "server=localhost;user=root;database=Liwker;password=1110";
MySqlConnection con = new MySqlConnection(conStr);
con.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
// 編輯發出給伺服器的刪除學生的SQL命令,其中@xh是一個引數
cmd.CommandText = "delete from student where 學號=@xh";
//提供命令所需要的引數,這裡提供剛才輸入的學號
cmd.Parameters.AddWithValue("@xh", who);
//非查詢類的SQL命令的執行用以下方法,返回1 代表成功,0則失敗
int r = cmd.ExecuteNonQuery();
if(r == 1)
{
System.Console.WriteLine("刪除成功!");
}
else
{
System.Console.WriteLine("刪除失敗,也可能是根本沒有此人!");
}
// 命令用完了,記得關閉連線,以便伺服器更好地為其它連線服務
con.Close();
}
//通過學號查詢一個學生的資訊
static void Find()
{
string who;
Console.Write("請輸入學號查詢:");
who = Console.ReadLine();
string conStr = "server=localhost;user=root;database=Liwker;password=1110"; // 連線資料庫的字串
MySqlConnection con = new MySqlConnection(conStr); // 定義一個資料庫新連結
con.Open(); // 開啟資料庫
MySqlCommand cmd = new MySqlCommand(); // 定義一個新SQL命令
cmd.Connection = con; // SQL命令連結到資料庫
cmd.CommandType = System.Data.CommandType.Text; // 傳送命令字串
cmd.CommandText = "select * from student where 學號=@xh;"; // 寫入SQL命令字串
cmd.Parameters.AddWithValue("@xh", who); // 替換引數
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); // 定義一個接受cmd物件執行結果的資料介面卡
DataSet ds = new DataSet(); // 定義一個接受SQL物件執行結果的資料集
adapter.Fill(ds); // 將介面卡裡的資料裝入ds
if (ds.Tables[0].Rows.Count > 0)
{
System.Console.WriteLine("學號: {0}", ds.Tables[0].Rows[0]["學號"]);
System.Console.WriteLine("姓名: {0}", ds.Tables[0].Rows[0]["姓名"]);
System.Console.WriteLine("性別: {0}", ds.Tables[0].Rows[0]["性別"]);
System.Console.WriteLine("年齡: {0}", ds.Tables[0].Rows[0]["年齡"]);
System.Console.WriteLine("系別: {0}", ds.Tables[0].Rows[0]["系別"]);
}
else
{
System.Console.WriteLine("查無此人!");
}
con.Close();
}
結果
3.查詢所有學生資訊
程式碼
// 查詢所有學生的資訊
static void showAll()
{
string conStr = "server=localhost;user=root;database=Liwker;password=1110";
MySqlConnection con = new MySqlConnection(conStr);
con.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "select * from student;";
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
// 利用迴圈來遍歷所有的行(學生)
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
System.Console.WriteLine("學號: {0}", ds.Tables[0].Rows[i]["學號"]);
System.Console.WriteLine("姓名: {0}", ds.Tables[0].Rows[i]["姓名"]);
System.Console.WriteLine("性別: {0}", ds.Tables[0].Rows[i]["性別"]);
System.Console.WriteLine("年齡: {0}", ds.Tables[0].Rows[i]["年齡"]);
System.Console.WriteLine("系別: {0}", ds.Tables[0].Rows[i]["系別"]);
System.Console.WriteLine("\n");
}
con.Close();
}
結果
4.查詢單個學生
程式碼
//通過學號查詢一個學生的資訊
static void Find()
{
string who;
Console.Write("請輸入學號查詢:");
who = Console.ReadLine();
string conStr = "server=localhost;user=root;database=Liwker;password=1110"; // 連線資料庫的字串
MySqlConnection con = new MySqlConnection(conStr); // 定義一個資料庫新連結
con.Open(); // 開啟資料庫
MySqlCommand cmd = new MySqlCommand(); // 定義一個新SQL命令
cmd.Connection = con; // SQL命令連結到資料庫
cmd.CommandType = System.Data.CommandType.Text; // 傳送命令字串
cmd.CommandText = "select * from student where 學號=@xh;"; // 寫入SQL命令字串
cmd.Parameters.AddWithValue("@xh", who); // 替換引數
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); // 定義一個接受cmd物件執行結果的資料介面卡
DataSet ds = new DataSet(); // 定義一個接受SQL物件執行結果的資料集
adapter.Fill(ds); // 將介面卡裡的資料裝入ds
if (ds.Tables[0].Rows.Count > 0)
{
System.Console.WriteLine("學號: {0}", ds.Tables[0].Rows[0]["學號"]);
System.Console.WriteLine("姓名: {0}", ds.Tables[0].Rows[0]["姓名"]);
System.Console.WriteLine("性別: {0}", ds.Tables[0].Rows[0]["性別"]);
System.Console.WriteLine("年齡: {0}", ds.Tables[0].Rows[0]["年齡"]);
System.Console.WriteLine("系別: {0}", ds.Tables[0].Rows[0]["系別"]);
}
else
{
System.Console.WriteLine("查無此人!");
}
con.Close();
}
結果
5.新增一個學生
方法一
// 新增學生(方法一)
// 有點缺陷,因為學號屬性是固定的5個字元,這裡就用了 if 來判斷比較(所以查出來的有空格)
// 例如:輸入“S02”是找不到的,必須輸入“S02 ”
static void addOne()
{
string xh, name, sex, age, xb, sg; // 宣告接收學生資訊的不同字串
Console.Write("新增者\n學號:");
xh = Console.ReadLine(); // 先輸入學號,以便判斷是否有重複
// 連線資料庫
string conStr = "server=localhost;user=root;database=Liwker;password=1110";
MySqlConnection con = new MySqlConnection(conStr);
con.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
// 先獲取已有的學生的學號
cmd.CommandText = "select 學號 from student";
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
// 學號重複判斷
for(int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (xh == (string)ds.Tables[0].Rows[i]["學號"]) //加string強制轉換
{
Console.Write("此學號已存在,請重新輸入:\n");
xh = Console.ReadLine();
i = -1;
}
}
Console.Write("姓名:");
name = Console.ReadLine();
Console.Write("性別:");
sex = Console.ReadLine();
Console.Write("年齡:");
age = Console.ReadLine();
Console.Write("系別:");
xb = Console.ReadLine();
Console.Write("身高:");
sg = Console.ReadLine();
// 定義SQL插入命令
cmd.CommandText = "insert into student values(@xh,@name,@sex,@age,@xb,@sg)";
cmd.Parameters.AddWithValue("@xh", xh);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@sex", sex);
cmd.Parameters.AddWithValue("@age", age);
cmd.Parameters.AddWithValue("@xb", xb);
cmd.Parameters.AddWithValue("@sg", sg);
int r = cmd.ExecuteNonQuery(); // 非查詢類SQL命令的返回(0 或 1)
if (r == 1)
{
System.Console.WriteLine("新增成功!");
}
else
{
System.Console.WriteLine("新增失敗!");
}
con.Close();
}
方法二
// 新增學生(方法二)
// 此方法就不存在空格問題
// 每輸入學號就會執行SQL檢視有沒有重複的
static void addOne1()
{
string xh, name, sex, age, xb, sg;
int f = 0; // 定義一個標誌,以便後面判斷重複
Console.Write("新增者\n學號:");
xh = Console.ReadLine();
// 連線資料庫
string conStr = "server=localhost;user=root;database=Liwker;password=1110";
MySqlConnection con = new MySqlConnection(conStr);
con.Open();
// 學號重複判斷
do
{
// 先來判斷是否有重複
if (f != 0)
{
Console.Write("此學號已存在,請重新輸入:\n");
xh = Console.ReadLine();
}
// 定義一個新的SQL命令
MySqlCommand cmd1 = new MySqlCommand();
cmd1.Connection = con;
cmd1.CommandType = System.Data.CommandType.Text;
// 定義查詢這個學號是否重複的SQL命令
cmd1.CommandText = "select * from student where 學號=@xh";
cmd1.Parameters.AddWithValue("@xh", xh);
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd1);
DataSet ds = new DataSet();
f = adapter.Fill(ds); // f接受行數,0為沒有,n為有n行資料
} while (f > 0); // 一直迴圈到沒有重複為止
Console.Write("姓名:");
name = Console.ReadLine();
Console.Write("性別:");
sex = Console.ReadLine();
Console.Write("年齡:");
age = Console.ReadLine();
Console.Write("系別:");
xb = Console.ReadLine();
Console.Write("身高:");
sg = Console.ReadLine();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
// 定義SQL插入命令
cmd.CommandText = "insert into student values(@xh,@name,@sex,@age,@xb,@sg)";
cmd.Parameters.AddWithValue("@xh", xh);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@sex", sex);
cmd.Parameters.AddWithValue("@age", age);
cmd.Parameters.AddWithValue("@xb", xb);
cmd.Parameters.AddWithValue("@sg", sg);
int r = cmd.ExecuteNonQuery(); // 非查詢類SQL命令的返回(0 或 1)
if (r == 1)
{
System.Console.WriteLine("\n新增成功!");
}
else
{
System.Console.WriteLine("\n新增失敗!");
}
con.Close();
}
結果
相關文章
- 用VS Code開發Vue應用Vue
- JSP+JDBC資料庫應用開發初步JSJDBC資料庫
- 資料湖 vs 倉庫 vs 資料庫資料庫
- 資料庫應用優化(一)資料庫優化
- 資料湖 vs 資料倉儲 vs 資料庫資料庫
- 大型資料庫應用 作業(一)資料庫
- 基於雲資料庫MongoDB版進行應用開發資料庫MongoDB
- 漸進式web應用開發---promise式資料庫(五)WebPromise資料庫
- 應用適配資料庫還是資料庫適配應用資料庫
- oracle資料庫資料字典應用Oracle資料庫
- 用【庫存】看懂雲開發資料庫事務資料庫
- Google釋出VS Code,支援Kubernetes應用開發Go
- 如何使用 VS Code 開發.NET Core應用程式
- 大型資料庫應用——一些筆記資料庫筆記
- 3.07 EOS資料庫應用資料庫
- 資料庫管理-第125期 融合vs專用(202301221)資料庫
- (資料科學學習手札120)Python+Dash快速web應用開發——整合資料庫資料科學PythonWeb資料庫
- 資料庫在資料分析中如何應用資料庫
- 使用Xamarin開發移動應用示例——數獨遊戲(六)使用資料庫遊戲資料庫
- 資料庫篇-mysql詳解( 一 )之基礎應用資料庫MySql
- 你應該瞭解的一些資料庫概念!RDBMS vs NoSQL,分散式 vs 叢集 ,分割槽 分表 分片 分庫資料庫SQL分散式
- 圖資料庫及應用場景資料庫
- 應用開發實踐之關係型資料庫(以MySql為例)小結資料庫MySql
- 鴻蒙原生應用開發——分散式資料物件鴻蒙分散式物件
- 平安科技資料庫總經理汪洋:開源資料庫在平安的應用實踐資料庫
- PingCAP 黃東旭萬字長文剖析資料庫發展新趨勢:脫離應用開發者的資料庫,不會成功PingCAP資料庫
- 使用js開發資料庫JS資料庫
- 達夢資料庫開發資料庫
- oracle資料庫開發的一些經驗Oracle資料庫
- 大資料技術於應用 視覺化圖表的開發應用大資料視覺化
- 從資料庫設計到效能調優,全面掌握openGemini應用開發最佳實踐資料庫
- 資料庫應用系統中的資料庫完整性(上)KP資料庫
- 生產資料庫、開發資料庫、測試資料庫中的資料的區分資料庫
- JSON資料格式及其在WEB開發中的應用JSONWeb
- InfluxDB vs TDengine,用資料“說”效能UX
- 圖資料庫有哪些應用場景?資料庫
- Go Web 程式設計--應用資料庫GoWeb程式設計資料庫
- HTAP資料庫及應用場景分析資料庫