2017-12-20 2 views
0

オブジェクトが有効な場合、SQL Serverテーブルの無効なオブジェクト名を取得するのはなぜですか?私は、実行時にSQLクエリを実行しようとしています

 SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"); 
     SqlCommand cmd = new SqlCommand(); 
     SqlDataReader reader; 
     cmd.CommandText = "SELECT * FROM dbo.Books_in_Storage WHERE author = 'myself'"; 
     cmd.CommandType = System.Data.CommandType.Text; 
     cmd.Connection = connection; 
     connection.Open(); 
     reader = cmd.ExecuteReader(); 
     connection.Close(); 

実行はreader = cmd.ExecuteReader();に到達し、私にエラーを与える:

Invalid object name dbo.Books in Storage .

私は、SQL Serverのオブジェクトエクスプローラを見れば、私はそれを見ることができますdbo.Books in Storageが存在します: enter image description here

どうしてですか?

+3

'Books in Storage'と' Books_in_Storage'は同じではありません。スペースを使用しないようにテーブルの名前を変更することをお勧めします。 –

+1

これは、表名やオブジェクト名にアンダースコアやスペース(特にスペース)を使用しない約3,980,437の理由の1つに過ぎません。 – Yuck

+0

[dbo.Books_in_Storage]? - 下線も避けてください – Rob

答えて

1

SQL Serverでは、以下のように[]を使用して空白を含むテーブルを照会できますが、データベーステーブル名を選択するときには、通常はにスペースは含まれません。

SELECT * FROM [table name] 
+0

ええ、私の答えを更新しました。 –

関連する問題