![](/img/trans.png)
[英]How can I select Price range with Input provided in textbox in jquery?
[英]How can I write a command to select a data from a database table when it matches the input provided on my textBox1.text?
我正在开发一个 windows 应用程序,如果TextBox1上的输入与下面我的数据库表的Word列中的任何数据匹配,它将显示TextBox2的同义词。 我下面的代码只有output当我在Word列中输入任何单词时很高兴请问我该如何纠正和实现?
请参阅下面的表格和代码:
**Id** **Word** **Synonym**
1 Happy Joyful
2 Sad Unhappy
3. Good Fine
string constr = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=…\Database1.mdf;Integrated Security=True";
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT Synonym FROM Ant&Syn WHERE Id = 1"))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
sdr.Read();
textBox2.Text = sdr["Synonym"].ToString();
}
}
con.Close();
如下使用参数化查询怎么样?
string matchingWord = TextBox1.text;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT Synonym FROM Ant&Syn WHERE Word = @word"))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@word", matchingWord)
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
sdr.Read();
textBox2.Text = sdr["Synonym"].ToString();
}
}
con.Close();
}
使用 SQL 参数
它执行查询以过滤要搜索的单词并返回所有可用的同义词0..*
使用通用列表class 来存储将在文本框中以单行显示方式连接的值(如果未找到则为空字符串):
using System.Collections.Generic;
var synonyms = new List<string>();
using ( var connection = new SqlConnection(connectionString) )
try
{
connection.Open();
using ( var command = connection.CreateCommand() )
{
command.CommandText = "SELECT Synonym FROM [Ant&Syn] WHERE Word = ?";
command.Parameters.Add("@word", SqlDbType.Text).Value = TextBox1.text;
using ( var reader = command.ExecuteReader() )
while ( reader.Read() )
synonyms.Add(reader[0].ToString());
}
}
finally
{
connection.Close();
}
TextBox2.Text = string.Join(", ", synonyms);
我们可以使用多行文本框、列表框、上下文菜单或其他任何东西来管理多个结果。
SqlCommand 参数 Add 与 AddWithValue
Output
Fine
改进 - 重构
我们可以创建一个方法并使用yield关键字返回一个IEnumerable :
IEnumerable<string> GetSynonyms(string word)
{
using ( var connection = new SqlConnection(connectionString) )
try
{
connection.Open();
using ( var command = connection.CreateCommand() )
{
command.CommandText = "SELECT Synonym FROM [Ant&Syn] WHERE Word = ?";
command.Parameters.Add("@word", SqlDbType.Text).Value = word;
using ( var reader = command.ExecuteReader() )
while ( reader.Read() )
yield return reader[0].ToString();
}
}
finally
{
connection.Close();
}
}
var synonyms = GetSynonyms(TextBox1.text);
改进 - 不区分大小写的比较
我们可以使用一个标志来设置选项:
IEnumerable<string> GetSynonyms(string word, bool caseInsensitive)
{
using ( var connection = new SqlConnection(connectionString) )
try
{
connection.Open();
using ( var command = connection.CreateCommand() )
{
string checkColumn = caseInsensitive ? "lower(Word)" : "Word";
string checkMatch = caseInsensitive ? word.ToLower() : word;
command.CommandText = "SELECT Synonym FROM [Ant&Syn] WHERE " + checkColumn + " = ?";
command.Parameters.Add("@word", DbType.String).Value = checkMatch;
using ( var reader = command.ExecuteReader() )
while ( reader.Read() )
yield return reader[0].ToString();
}
}
finally
{
connection.Close();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.