如何进行查询以检索特定数据

时间:2015-05-21 23:31:54

标签: c# sql sql-server database

我正在学习C#和SQL Server。我正在学习一个简单的教程,这使我创建了一个连接和更新数据库的类DBconnection。然后我有一个简单的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而没有外部库。我没有参与该项目的PC,所以现在无法测试任何东西,但经过一夜安眠之后,在(重新)查看我的代码之后,我可能已经找到了回答。请告诉我你是否认为这样可以解决问题:

在我的第二个课程中(我连接并访问数据库),我已经使用了SQL查询,更具体地说:

objConnect.Sql = Properties.Settings.Default.authSQL;

此查询(authSQL)由我创建并嵌入在“设置”中,我在这里导入它。所以,如果我改为做以下事情,你认为它会起作用吗?

objConnect.Sql = "SELECT last_name FROM Employees WHERE first_name = 'Jason'";

&#34; Properties.Settings.Default.authSQL&#34;代码只不过是字符串的快捷方式&#34; SELECT * FROM AUTH&#34; - AUTH是我的桌子,为了简单起见我称之为Employees。

所以,它会是这样的:

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);
        }
    }

2 个答案:

答案 0 :(得分:1)

这里不需要数据集。如果你知道你想要的sql:使用它 - 也许有一些参数化。例如,使用&#34; dapper&#34;,我们可以:

string firstName = "Jason";
var lastNames = con.Query<string>(
    "SELECT last_name FROM Employees WHERE first_name = @firstName",
    new { firstName }).ToList();

答案 1 :(得分:1)

检查一下....希望这也有效......

//String Declaration
string Sqlstr = "select CountryCode,Description,Nationality from  ca_countryMaster where isDeleted=0 and CountryCode = 'CAN' ";

string DBCon = "Data Source=RAJA;Initial Catalog=CareHMS;Integrated Security=True;";

            SqlConnection SqlCon = new SqlConnection(DBCon);
            SqlDataAdapter Sqlda;
            DataSet ds = new DataSet();

            try
            {
                SqlCon.Open();
                Sqlda = new SqlDataAdapter(Sqlstr, SqlCon);
                Sqlda.Fill(ds);

                gdView.DataSource = ds.Tables[0];
                gdView.DataBind();
            }
            catch (Exception ex)
            {
                lbl.text = ex.Message;
            }
            finally
            {
                ds.Dispose();                
                SqlCon.Close();
            }