我目前正在尝试通过Visual Studio C#创建一个查询,当使用该表单的人在文本框中输入客户ID,然后在表单的文本框中显示这些记录时,将为CustomerID选择所有记录。我怎样才能实现这一目标?我对SQL知之甚少,或者如何让这两种语言协同工作。我已经创建了数据库并使用它在visual studio中创建了一个数据源。我相信我的查询看起来应该像
SELECT CustomerID, Name, Address, City, State, ZipCode, Phone, Email
FROM Customers
WHERE (CustomerID = @Param1)
但是,我真的不知道实际上应该调用@ Param1,因为它来自文本框。这个查询应该怎么读?我甚至走在正确的轨道上吗?
第二个问题是,一旦我选择了这些数据,如何让每个选定的数据填充到表单上的文本框中?
很抱歉新手问题,这是我第一次真正用SQL做任何事情。
感谢您的帮助。
答案 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。