如何根据客户输入在Visual Studio中运行SQL Query?

时间:2014-04-17 20:02:27

标签: c# sql visual-studio

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

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

但是,我真的不知道实际上应该调用@ Param1,因为它来自文本框。这个查询应该怎么读?我甚至走在正确的轨道上吗?

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

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

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

您应该阅读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"];
    }
}

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

答案 1 :(得分:2)

See this thread第一个问题。这是一个简单的例子(我使用转换器,抱歉任何不一致)。

    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;

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

在上面的例子中,第一个项目(在ds.Tables(0).Rows(0).Item()的索引中)是EmployeeID,它被插入到文本框EmployeeIDTxt中。

另请注意,如果您使用的是Oracle,则SQL语句末尾的分号不应存在,并且参数前面应加冒号。请参阅下面的快速示例:

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

答案 2 :(得分:1)

看到你已有数据源,你可以使用LINQ与它进行交互。 有关LINQ及其使用方法的基本信息,请参阅this link