資料庫應用開發一、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();
}
結果
相關文章
- 資料庫開發(21)高階應用開發資料庫
- 用VS Code開發Vue應用Vue
- Mysql資料庫應用(一)MySql資料庫
- JSP+JDBC資料庫應用開發初步JSJDBC資料庫
- 用vscode開發vue應用VSCodeVue
- 資料庫應用優化(一)資料庫優化
- 資料湖 vs 倉庫 vs 資料庫資料庫
- Web應用離不開資料庫Web資料庫
- UAVStack應用資料歸集
- 漸進式web應用開發---promise式資料庫(五)WebPromise資料庫
- 基於雲資料庫MongoDB版進行應用開發資料庫MongoDB
- 大型資料庫應用 作業(一)資料庫
- 應用適配資料庫還是資料庫適配應用資料庫
- 資料庫應用程式開發入門篇—— 關聯式資料庫中的基本概念資料庫
- 資料湖 vs 資料倉儲 vs 資料庫資料庫
- 資料庫應用管理資料庫
- 用【庫存】看懂雲開發資料庫事務資料庫
- oracle資料庫資料字典應用Oracle資料庫
- 大型資料庫應用——一些筆記資料庫筆記
- 如何使用 VS Code 開發.NET Core應用程式
- 資料庫命令的應用資料庫
- 資料庫應用管理(zt)資料庫
- ASP與資料庫應用資料庫
- 使用Xamarin開發移動應用示例——數獨遊戲(六)使用資料庫遊戲資料庫
- 鴻蒙原生應用開發——分散式資料物件鴻蒙分散式物件
- Windows phone應用開發[19]-RSA資料加密Windows加密
- Windows phone 應用開發[2]-資料快取Windows快取
- 使用VS Code開發 除錯.NET Core 應用程式除錯
- 資料庫在資料分析中如何應用資料庫
- 3.07 EOS資料庫應用資料庫
- VB6基本資料庫應用(二):建立資料庫資料庫
- FORMS開發中FOLDER(資料夾)功能的應用ORM
- 虛擬專用資料庫VPD應用資料庫
- 資料庫篇-mysql詳解( 一 )之基礎應用資料庫MySql
- Google釋出VS Code,支援Kubernetes應用開發Go
- J2EE vs .NET 應用開發走向何處?
- 統一整合資料平臺架構下的微應用開發架構
- 達夢資料庫開發資料庫