如何在Visual Studio中基于客户输入运行SQL查询

本文关键字:客户 输入 运行 查询 SQL 于客户 Visual Studio | 更新日期: 2023-09-27 17:58:53

我目前正试图通过Visual Studio C#创建一个查询,当使用该表单的人在文本框中输入客户ID时,该查询将选择客户ID的所有记录,然后在表单的文本框中显示这些记录。我该如何实现这一点?我对SQL或如何使这两种语言协同工作知之甚少。我已经创建了数据库,并用它在visualstudio中创建了一个数据源。我相信我的查询应该看起来像

SELECT        CustomerID, Name, Address, City, State, ZipCode, Phone, Email
FROM            Customers
WHERE        (CustomerID = @Param1)

然而,我真的不知道@Param1实际上应该叫什么,因为它来自一个文本框。这个查询应该如何读取?我走对了吗?

第二个问题是,一旦我选择了这些数据,我如何让每一条选择的数据填充到我表单上的文本框中?

很抱歉有新手的问题,这是我第一次真正使用SQL做任何事情。

谢谢你的帮助。

如何在Visual Studio中基于客户输入运行SQL查询

您可能应该了解ADO.NET及其工作原理。您需要创建一个SqlConnection和一个SqlCommand来从C#执行SQL。

using( SqlConnection conn = new SqlConnection( connectionString ) )
{
    conn.Open();
    using( SqlCommand command = new SqlCommand( "your select statement", conn ) )
    {
        command.AddWithValue( "@Param1", YourTextBox.Text );
        var reader = command.ExecuteReader();
        reader.Read();
        txtFoo.Text = reader["FooColumn"];
        txtBar.Text = reader["BarColumn"];
    }
}

以上是粗略的代码,并不完整和实用。一旦你完成了一些研究和阅读,但没有为你写下整个工作/学校作业,我们很乐意为你提供帮助。

请参阅本线程了解您的第一个问题。这里有一个快速的例子(我使用了转换器,很抱歉有任何不一致之处)。

    string eId = EmployeeIDTxt.Text;
    string query = String.Empty;
    query = "SELECT EMPL_SEQ_ID, EMPL_ID, EMPL_LAST_NM, EMPL_FIRST_NM, EMPL_PREFRD_NM"
    query &= "  FROM EMPL"
    query &= "  WHERE EMPL_SEQ_ID = @ID; "
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(MyConn)) {  'myconn should be your connection string
    using (SqlDataAdapter da = new SqlDataAdapter()) {  'SqlDataAdapter should be different if you're using OleDb or Oracle
        da.SelectCommand = new SqlCommand(query, conn); 'See previous comment for SqlCommand
        da.SelectCommand.Parameters.Add(new SqlParameter("@ID", eId)); 'Gives your parameter the value you feed it
        da.Fill(ds); 'fill the dataset with the results from the query
    }
}

您还可以通过将SQL语句中的数据加载到DataTable或DataSet中来专门引用每个项。它看起来是这样的:

DataSet ds = New DataSet();
EmployeeIDTxt.Text = ds.Tables(0).Rows(0).Item(1).ToString;
LNameTxt.Text = ds.Tables(0).Rows(0).Item(2).ToString;
FNameTxt.Text = ds.Tables(0).Rows(0).Item(3).ToString;

通过使用数据集中表的索引或数据表中的项,可以将这些值插入到文本框中。

在上面的示例中,第一个项(在ds.Tables(0).Rows(0。

还要注意,如果您使用的是Oracle,SQL语句末尾的分号不应该存在,并且Parameter前面应该有冒号。参见下面的快速示例:

myCommand.Parameters.Add(New OracleParameter(":EmployeeID", empId))

鉴于您已经有了数据源,您可以使用LINQ与它进行交互。有关LINQ以及如何使用它的基本信息,请参阅此链接。