投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/5/31 10:21:09
> cmd.Parameters.Add("@code/Address", SqlDbType.NVarChar, 50).Value = TextBox3.Text
> cmd.Parameters.Add("@(Tel)", SqlDbType.NVarChar, 50).Value = TextBox4.Text
SQL Server の変数名に、「/」「(」「)」「 」などを含めることはできません。

記号を使う場合、使用できる文字は
 「_」アンダースコア
 「@」アットマーク
 「#」ナンバーサイン
 「$」ドル記号
の 4 種に限られています。通常は「_」程度に留めましょう。

また、SQL Server に対しては、@ID という変数のために
    cmd.Parameters.Add("ID", SqlDbType.NVarChar, 50).Value = TextBox1.Text
    cmd.Parameters.Add("@ID", SqlDbType.NVarChar, 50).Value = TextBox1.Text
のどちらの構文を使っても構わないことになっています。
このような事情もあるため、変数名の先頭に記号を使うことも避けてください。(@@ID などを避ける)


> Dim sqlQuery As String = "INSERT INTO [Table](ID ,Name ,code/Address ,(Tel) )" & _
>                          "VALUES(@ID ,@Name ,@code/Address ,@(Tel) )"

……最後の閉じ括弧が全角になっていますよ?

まず、TABLE は予約語なので、本当にテーブル名が「Table」なら、
上記のように「[Table]」表記にするのが正しいですね。ここまでは OK 。

あるいは「"Table"」表記も使えますが、文字列中に " を含めると
分かりにくくなるので、やはり「[Table]」表記の方が良いでしょう。

列名の code/Address や (Tel) が NG なのは、既に述べられている通り。
フィールド名に記号や空白を含めることは、あまり望ましくないのですが、
本当にフィールド名が「code/Address」や「(Tel)」なのであれば、
SQL 文中で指定する場合には「[code/Address]」や「[(Tel)]」と記さねばなりません。

なお、ID や Name は予約語ではありませんので、「ID」のままでも構わないのですが、
今回の場合は統一感を出すために、「[ID]」表記にそろえた方が良いでしょう。
(なお、ID という列名はセーフですが、IDENTITY や IDENTITYCOL は予約語です)


そして特に問題となっているのは、VALUES 句以降です。
YuO さんが書かれている通り、@code/Address な変数名は NG です。


ということで…もしも本当に、SQL Server 上の「Table」という名前のテーブルに、
nvarchar(50) 型のフィールドが 4 つ、「ID」「Name」「code/Address」「(Tel)」という名前で
用意されているのだとしたら、今回の処理を、たとえば下記のように書けます。

cn.Open()
Dim sqlQuery As String = "INSERT INTO [Table] ( [ID], [Name], [code/address], [(Tel)] ) " & _
                         "VALUES ( @ID, @Name, @code_name, @Tel )"
Using cmd As New SqlCommand(sqlQuery, cn)
    cmd.Parameters.Add("ID", SqlDbType.NVarChar, 50).Value = TextBox1.Text
    cmd.Parameters.Add("Name", SqlDbType.NVarChar, 50).Value = TextBox2.Text
    cmd.Parameters.Add("code_name", SqlDbType.NVarChar, 50).Value = TextBox3.Text
    cmd.Parameters.Add("Tel", SqlDbType.NVarChar, 50).Value = TextBox4.Text
    cmd.ExecuteNonQuery()
End Using
cn.Close()
cn.Dispose()


※cn As SqlConnection に対する Open / Close やトランザクション処理などは、
 実際の処理に併せて、適宜修正してください。