2

Visual Studio 2010 を使用して基本的な c# を学習しており、SQL サーバー データベースを使用するアプリケーションを作成しています。このアプリケーションでは、ユーザーがリッチ テキスト ボックスにテキストを入力し、ボタンを押すと、テキスト ボックス 2 に「保存された」単語を表示できます。これらの保存された単語は、* が付いている単語のみです。データベース ファイルはありますが、そのコードを実行する方法がわかりません。これまでのところ、

SqlConnection myConn = new SqlConnection(@"Server=.\SQLEXPRESS;AttachDbFilename='C:\datafile.mdf';Integrated Security=True;User Instance=True");
con.Open();
SqlCommand com = new SqlCommand("SELECT name FROM bbc", con);
SqlDataReader sdr = com.ExecuteReader();
while (sdr.Read())
{
    this.txtbox2.Text.Add(sdr[""]);
}

これは私のボタンハンドラーの下にあります。

私は自分のデータファイルを設定しているので、テキストボックス1からデータを取得してテキストボックス2に表示するように実際に設定する方法のケースです

4

4 に答える 4

0

「*」で始まる単語のみを表示したい場合は、データベース クエリを制限して、それらの単語のみを返すことができます。

SELECT name FROM bbc where name like '*%'

「%」文字はワイルドカードです。つまり、「*」で始まり、何かで終わる結果のみを返します。

于 2012-04-19T18:05:26.187 に答える
0

たぶん、次のとおりです。

while (sdr.Read())
{
    string value = sdr["name"].ToString();
    if(value.StartsWith("*"))
        txtbox2.Text += value;
}

いくつかのポイント:

  • SqlConnection の周りに using を配置して、自動的に閉じるようにします。
  • Master データベースに接続しようとしていることに気付きました。なんで?
  • %Dave は、結果を制限するためにワイルドカードを使用することについて良い点を指摘しています。
于 2012-04-19T18:06:52.113 に答える
0

May be something like this:

StringBuilder builder = new StringBuilder();
while (sdr.Read())
{
    string value = sdr["name"].ToString();
    if(value.Contains("*"))
        builder.Append(value );
}

this.txtbox2.Text = builder.ToString();
于 2012-04-19T17:57:49.413 に答える
0

私は次のようなものを使用します:

//SQL Connection stuff here
con.Open();
String queryStr = "SELECT name FROM bbc WHERE name LIKE '*%'";
SqlCommand com = new SqlCommand(queryStr, con);
SqlDataReader sdr = com.ExecuteReader();

while(sdr.Read())
{
   this.textbox2.Text = sdr.GetValue(0).ToString();
}

SQL にクエリ結果を制限させる方がはるかに簡単で、通常はより効率的です。

于 2012-04-19T18:11:55.587 に答える