如何从文本框(windows窗体)检查主键是不是存在于我的数据库中,c#
Posted
技术标签:
【中文标题】如何从文本框(windows窗体)检查主键是不是存在于我的数据库中,c#【英文标题】:How to check if the primary key exists in my database from a textbox (windows form), c#如何从文本框(windows窗体)检查主键是否存在于我的数据库中,c# 【发布时间】:2015-11-06 16:21:27 【问题描述】:我在 Windows 窗体应用程序中有一个文本框和一个按钮。 当我在文本框中输入数字并按下按钮时,我想检查主键 (persId) 是否存在于我的 sql 数据库/数据集(使用 Visual Studio 制作)中。我不知道如何将文本与数据库中的 persId 进行比较。
如果 persId 存在,我想在一个新表单中填写两个文本框并显示 persId 和 persName。
我是 C# 编程的新手,所以我可能错过了一些东西。我查看了how to check if value exists in database from textbox c#,但找不到答案。
提前致谢!
public void searchPersId(string persId)
SqlConnection conn = new SqlConnection();
SqlCommand myCommand = new SqlCommand("SELECT persId FROM Customers WHERE persId = @persId", conn);
myCommand.Parameters.AddWithValue("@persId", persId);
if (textBox1.Text = myCommand ) //I dont know how to compare the values of textbox with myCommand..
//Show values (persId and persName) in two textBoxes in a new form.
else
MessageBox.Show("The ID does not exist.");
【问题讨论】:
您需要执行该命令才能从数据库中获取结果。 【参考方案1】:首先,对所有实现IDisposable
的东西使用using
-statement,例如处理非托管资源和关闭连接的连接,即使出现错误也是如此。
然后您必须打开连接并使用ExecuteReader
让数据读取器检查是否至少有一条具有该ID 的记录,您可以使用reader.HasRows
。如果您想要如上所述,您还必须选择persName
。
using(var conn = new SqlConnection())
using(var myCommand = new SqlCommand("SELECT persId, persName FROM Customers WHERE persId = @persId", conn))
myCommand.Parameters.AddWithValue("@persId", persId);
conn.Open();
using(var rd = myCommand.ExecuteReader())
bool personExists = rd.HasRows;
if(personExists)
// advance the reader to the first record, presuming there is only one, otherwise use a loop while(rd.Read)
rd.Read();
string persName = rd.GetString(1); // second field
// ...
else
MessageBox.Show("The ID does not exist.");
【讨论】:
【参考方案2】:你也可以使用 ExecuteScalar
public void searchPersId(string persId)
SqlConnection conn = new SqlConnection();
SqlCommand myCommand = new SqlCommand("SELECT persName FROM Customers WHERE persId = @persId", conn);
myCommand.Parameters.AddWithValue("@persId", persId);
object personName = myCommand.ExecuteScalar();
if(!string.IsNullOrEmpty(personName.ToString()))
//if (textBox1.Text = myCommand) //I dont know how to compare the values of textbox with myCommand..
//Show values (persId and persName) in two textBoxes in a new form.
textBox2.Text = personName.ToString();
else
MessageBox.Show("The ID does not exist.");
【讨论】:
由于您只需要检查一个值来检查记录是否存在,因此这是更快、最好的方法。【参考方案3】:首先你必须执行命令。
SqlDataReader dr = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
if (dr.HasRows)
// ... if it has rows then you know it match
else
// ... data doesn't exists
然后你就可以比较结果了。
【讨论】:
以上是关于如何从文本框(windows窗体)检查主键是不是存在于我的数据库中,c#的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 窗体 C# 中为文本框设置 Scintilla
C#。当我尝试检查用户是不是存在于我的 SQL 数据库中时,我的 Windows 窗体应用程序崩溃