2012-01-26 12 views
-3

私はこのコードを使用してSQLデータベースを作成するプログラム(C#)を開発しました:C#でプログラムでSQL Serverに接続する方法?

string SQLCreation = "IF NOT EXISTS (SELECT * FROM master..sysdatabases WHERE Name = 'x') CREATE DATABASE x"; 
SqlConnection PublicSQLDBCreationConnection = new SqlConnection(connectionString); 
SqlCommand PublicSQLDBCreation = new SqlCommand(SQLCreation, PublicSQLDBCreationConnection); 

try 
{ 
    PublicSQLDBCreationConnection.Open(); 
    PublicSQLDBCreation.ExecuteNonQuery(); 
    PublicSQLDBCreationConnection.Close(); 
} 
//'then creates a table and so on 

は今はIPまたはコンピュータ名を使用せずに(LAN経由)このデータベースに接続するクライアントアプリケーションを持っていると思います。そんなことがあるものか? IP Adrについて言及していない間にこれを行うことができ、データセットを持っていますか?またはコンピュータ名?


P.S.私のコードをあなたの視点で単純化しましたが、私はSQLインジェクションや他の試みが起こらないことを確認しました。 また、サーバー名やIPについて言及していない理由は、多くのネットワーク上で自分のアプリケーションを大量に展開したいということです。

+11

サーバーの場所はどのように伝えますか? "最初のルータで左折し、次に右の3番目のCAT-5ジャックに接続しますか?" – JNK

+2

IPまたはホスト名なしで接続しないとどういう意味ですか? AFAIKあなたは接続文字列の一部としてそれらの1つを持っていなければなりません。 – blowdart

+0

どのマシン上にあるのかを特定することなくデータベースに直接接続することはできません。要件に応じて、サービスレイヤなどを使用して間接指定を行うことができます。 IPまたはコンピュータ名を指定できない要件/理由は何ですか? –

答えて

1

SqlDataSourceEnumeratorを使用して、表示および参照可能なすべてのSqlサーバーの一覧を取得できます。これは良いテクニックではありません。データベースを作成する権利を持たないインスタンスを取得できますが、それでも何かを試すことができます。

+1

確かに、最終的にはサーバー名も使用しています。**事前に**知っている必要はありません。リストから選択することはできますが、まだ使用しています。それに接続するサーバの名前 –

+0

私は知っていますが、サーバ名はユーザに知られていないので、BShakibaが求めているものでもあります。 –

+0

私はこれが仕事をすると思います。ご協力いただきありがとうございます – BShakiba

関連する問題