0

データベース接続の設定フォームを作成する必要があるプログラムを開発しています。テキストボックスから接続文字列を設定する方法に立ち寄りました。これが私のコードです:

設定フォームで:

public string adresa_servera()
        {    
            return textBox1.Text;
        }

このテキスト ボックスのテキストは次のとおりです。MICHAL-PC\SQLEXPRESS

私のメインフォームでは、次を使用します。

db_nastavenia nastavenia = new db_nastavenia(); //db_nastavenia is the name of the settings Form

string x = nastavenia.adresa_servera();

SqlConnection databaza = new SqlConnection();
databaza.ConnectionString = "Data Source=" + x + ";Initial Catalog=ZBERUDAJOVTEPLA;Persist Security Info=False;User ID=sa; password=diplomovka";

To x 設定フォームのテキストボックスからテキストを読み込みます。

このように接続文字列を手動で入力して試してみると、うまくいきます。

databaza.ConnectionString = "Data Source=MICHAL-PC\\SQLEXPRESS;Initial Catalog=ZBERUDAJOVTEPLA;Persist Security Info=False;User ID=sa; password=diplomovka";
4

2 に答える 2

0

こんにちは、次のようなことができます:

try
            {
               string x = TextBox1.Text;
               string Connection ="Data Source=" + x + ";Initial Catalog=ZBERUDAJOVTEPLA;Persist Security Info=False;User ID=sa; password=diplomovka";
                using (var conn = new SqlConnection(Connection))
                {
                    using (var cmd = new SqlCommand("Select * from Yourtable", conn))
                    {

                        try
                        {
                            conn.Open(); 

                        }
                        catch (SqlException)
                        {
                            throw;
                        }
                        finally
                        {
                            if (conn.State == ConnectionState.Open) conn.Close();
                        }

                    }
                }
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
            }

よろしくお願いします

于 2012-04-24T23:25:56.473 に答える
0

Michal さん、これがコード全体であり、テキスト ボックスのデフォルト値を設定していない場合、それが機能していないのは驚くことではありません。たとえば、ボタンを押したときなど、イベントに反応しながら値を取得する必要があります...または、OnTextChangedイベントを監視することもできます...

この例では、何らかのフォームを作成し、すぐに値を取得しようとしています。テキストボックスにはまだ値がないため、これは機能しません。

編集: これらのダブルダブルスラッシュがこれらの問題を引き起こしています。このエスケープ ロジックがどこに適用されているのかわかりません。設定した設定かもしれませんが、簡単な解決策があります。

string x = nastavenia.adresa_servera().Replace("\\", "\");

これが役に立ったかどうか教えてください。

于 2012-04-24T22:57:33.583 に答える