2017-03-13 7 views
1

英語の文法を教えてください。サーバーにデータベースを作成した後で新しいSQL接続を確立する

私は現在システムをコーディングしており、サーバーにデータベースを作成した後に新しい接続を確立できるかどうかは疑問でした。

これは、接続文字列である: - :

Dim dbName As String = txtdbName.Text 
myCommand = "CREATE database " & dbName 

私は、私が使用するデータベースのコマンドを作成したい場合

Dim DBCon As SqlConnection = New SQLConnection("Data Source=(localdb)\DbLocal;Integrated Security=True") 

データベース名がテキストボックスの後に制限され、それは次のようになりますデータベースが作成されますが、テーブルを作成するクエリを開始すると、テーブルは作成されたデータベースに保存されません。だから、VB.NetとMSSQLの私の初心者のスキルと、私はそれがために私の接続文字列であった推測ので、私はそれをいじりみました:

Dim myConnectionString As SqlConnection = New SqlConnection("Data Source=(localdb)\DbLocal;Database=" & dbName & ";Integrated Security=True;Pooling=False") 

私はテーブルのクエリを作成する前に上記のコードを書きましたが、後に私はそれを実行し、クエリで作成したテーブルはデータベースには行きませんでした。私はこれを行うための「正しい」方法があるかどうか疑問に思っていました。私はオンラインで見つけた異なるコードを混ぜてみましたが、同じ結果が得られます。

編集:私のテーブルクエリを作成します。

myCommand = "CREATE TABLE tblPerson (PersonID int, LastName varchar(300), FirstName varchar(300), Address varchar(300), City varchar(300))" 
+0

テーブル作成コマンドを実行すると、エラーはありませんか? –

+0

@KobyDouekはいエラーはありません。私はMSSQLのクエリエディタもチェックしました。私はcreate tableのクエリをちょうどの場合に追加します。 – Rhail

答えて

2

私はこれを行うような方法は、CREATE TABLEの前にUSE文を追加することです。だから、CREATE TABLEコマンドは次のようになります。

"USE " & dbName & "; 
GO 

CREATE TABLE ..." 

EDIT:コメントで指摘したように、GOセパレータは、.NET、SQLコマンドで使用することはできません。

"CREATE TABLE " & dbName & ".dbo.MyTable (..." 

をまたは1つは、GOセパレータを使用することができないSMOを使用します。

代わりに、1は、このようにデータベースを指定する命名三部を使用することができます。この技術は、this questionへの受け入れられた回答に完全に記述されています。

+0

OPはsqlコマンドですべてを実行しているので、GOキーワードはここでは機能しません。これはSSMSのデフォルトのバッチ区切りであり、sqlコマンドではありません。ただし、新しいテーブルを作成するには、3つの部分命名を使用することができます。 –

+0

@SeanLangeテーブルを作成するための3つの部分の命名は何ですか?どこで情報を見つけることができますか? – Rhail

+0

この場合、 "Create" + dbname + ".dbo.tblPerson ..."となります。この方法で、指定したデータベースとスキーマでテーブルを作成することができます。同じサーバー上にある限り、これは完全に有効です。 –

関連する問題