如何在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做任何事情。
谢谢你的帮助。
您可能应该了解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以及如何使用它的基本信息,请参阅此链接。