我正在學習C#和SQL Server。我正在遵循一個簡單的教程,這導致我創建了一個DB連接類,用於連接和更新數據庫。然後我有一個簡單的C#表單,它使用一個按鈕和一個DataSet複製數據,在表格行中來回導航,然後在一些標籤上顯示信息。如何進行查詢以檢索特定數據
沒有問題'直到這裏,但我想,如果我想顯示一個特定行的單個值(列),說「給我顯示具有某個名字的人的姓氏」。
我熟悉的SQL查詢命令,所以我想是這樣的:
SELECT last_name FROM Employees WHERE first_name = 'Jason'
跟隨我的代碼...
DBconnection.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace cemiGEST
{
/// <summary>
/// A class that makes the connection to the SQL Database
/// </summary>
class DBconnection
{
// variables
private string sql_string;
private string strCon;
System.Data.SqlClient.SqlDataAdapter da_1;
// set methods
public string Sql
{
set { sql_string = value; }
}
public string connection_string
{
set { strCon = value; }
}
// DataSet
public System.Data.DataSet GetConnection
{
get { return MyDataSet(); }
}
// MyDataSet method
private System.Data.DataSet MyDataSet()
{
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);
con.Open();
da_1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con);
System.Data.DataSet dat_set = new System.Data.DataSet();
da_1.Fill(dat_set, "Table_Data_1");
con.Close();
return dat_set;
}
// Update DB method
public void UpdateDB(System.Data.DataSet ds)
{
System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da_1);
cb.DataAdapter.Update(ds.Tables[0]);
}
}
}
我正在通過遞增一個更新行號的變量來訪問這些值(當來回移動時)。以下是一些示例代碼。
public partial class Example : Form
{
// variables
DBconnection objConnect;
string conStringAUTH;
DataSet ds;
DataRow dr;
int maxRows;
int inc = 0;
private void Login_Load(object sender, EventArgs e)
{
CloseBeforeLogin = true;
try
{
objConnect = new DBconnection();
conStringAUTH = Properties.Settings.Default.authConnectionString;
objConnect.connection_string = conStringAUTH;
objConnect.Sql = Properties.Settings.Default.authSQL;
ds = objConnect.GetConnection;
maxRows = ds.Tables[0].Rows.Count;
if (maxRows == 0)
{
MessageBox.Show("No user found. Loading first run wizard.");
NewUser newUser = new NewUser();
newUser.ShowDialog();
}
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
}
我敢肯定,這是簡單的,但我沒有到達那裏。
編輯:
我寧願用我的課的DbConnection,沒有外部庫。我不在計劃中,因此目前無法測試任何東西,但是經過對此事的一整夜睡眠之後,以及在重新查看我的代碼之後,我可能找到了答案。請告訴我,如果你認爲這會做的伎倆:
在我的第二類(在這裏我連接並訪問DB),我已經使用SQL查詢,更具體位置:
objConnect.Sql = Properties.Settings.Default.authSQL;
這個查詢(authSQL)由我創建並嵌入到設置中,在這裏我正在導入它。所以,如果我做了以下代替,你認爲這是可行的:
objConnect.Sql = "SELECT last_name FROM Employees WHERE first_name = 'Jason'";
的「Properties.Settings.Default.authSQL」代碼只不過是一個快捷方式更上一個字符串「SELECT * FROM AUTH」 - AUTH是我的桌子,爲簡單起見,我稱其爲員工。
所以,這將是這樣的:
public partial class Example : Form
{
// variables
DBconnection objConnect;
string conStringAUTH;
DataSet ds;
DataRow dr;
int maxRows;
int inc = 0;
private void Login_Load(object sender, EventArgs e)
{
CloseBeforeLogin = true;
try
{
objConnect = new DBconnection();
conStringAUTH = Properties.Settings.Default.authConnectionString;
objConnect.connection_string = conStringAUTH;
objConnect.Sql = "SELECT last_name FROM Employees WHERE first_name = 'Jason'";
ds = objConnect.GetConnection;
// Data manipulation here
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
dapper.Net:https://github.com/ StackExchange/dapper-dot-net – Eric
請檢查我對該問題的編輯。 – Aedahl