Visual Basic 2005 でCREATE文を使用するには?

解決


VB初心者  2007-12-05 19:17:20  No: 138279

Visual Basic 2005からCREATE文を使いたいと思い、作成したのですが、エラーが出て思うように使えません。
作成した文はこれです。

Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" _
     & "Data Source = C:\Documents and Settings\kmuraoka\My Documents\Visual Studio 2005\Projects\文書管理ツール\文書管理ツール\ファイルデータ.mdb"

Dim cmd1 As New OleDb.OleDbCommand
cmd1.Connection = cn

ListBox1.Items.Clear()
Dim name As String = TextBox2.Text

cn.Open()

cmd1.CommandText = "CREATE TABLE '" & name & "' (ID INT PRIMARY KEY,file_name NCHAR(20))"

cmd1.ExecuteNonQuery()

cn.Close()

これを実行すると、

CREATE TABLE ステートメントの構文エラーです。

というエラーになります。
どのようにしたら、実行可能になるのでしょうか?


もげ  2007-12-05 20:12:10  No: 138280

>CREATE TABLE ステートメントの構文エラーです。
ということですから、VB2005とは関係ありません。

SQL文の構文エラーを直してください。
今回のはJetの構文ですから、
・テーブル名は  シングルコーテーションではなく、[]で囲う
・NCHARは無いのでCHARかVARCHARで
で試してみてください。


VB初心者  2007-12-06 23:29:01  No: 138281

回答ありがとうございます。

Dim cn As New OleDb.OleDbConnection
cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" _
     & "Data Source = C:\Documents and Settings\kmuraoka\My Documents\Visual Studio 2005\Projects\文書管理ツール\文書管理ツール\ファイルデータ.mdb"

Dim cmd1 As New OleDb.OleDbCommand
cmd1.Connection = cn

ListBox1.Items.Clear()
Dim name As String = TextBox2.Text

cn.Open()

cmd1.CommandText = "CREATE TABLE [" & name & "] (ID INT PRIMARY KEY,file_name CHAR(20))"

cmd1.ExecuteNonQuery()

cn.Close()

ということでしょうか??


とおりすがり  2007-12-06 23:57:46  No: 138282

>で試してみてください。
村岡さん


VB初心者  2007-12-07 00:41:21  No: 138283

cmd1.CommandText = "CREATE TABLE [" & name & "] (ID INT PRIMARY KEY,file_name CHAR(20))"

に変更して実行してみたら、作成できました。
INSERTをしてみようと思ったんですが、今度はINSERTがいきません。
どうしたら、いいのでしょうか?

文はこちらです。
cmd2.CommandText = "INSERT INTO '" & TextBox2.Text &"' (file_name) VALUES ('" & FileName & "')"

です。


もげ  2007-12-07 01:00:39  No: 138284

同じミスを繰り返しているようですね:-)。

>・テーブル名は  シングルコーテーションではなく、[]で囲う


VB初心者  2007-12-08 20:02:58  No: 138285

すみません↓
それで、同じく行ってみます。


VB初心者  2007-12-12 00:26:22  No: 138286

cmd1.CommandText = "INSERT INTO [" & TextBox2.Text & "] (file_no,file_drive) VALUES ([" & i & "], [" & DriveName & "])"

cmd1.ExecuteNonQuery()

このように実行してみたのですが、エラーになってしまします。
どのように変更すると実行できるようになるのでしょうか。
ぜひアドバイスお願いします。


特攻隊長まるるう  2007-12-12 19:51:48  No: 138287

SQL文はVBとは全く違う言語です。
プログラムとは別に、勉強しないと分かりませんよ。
# ついでに言えば半分板違い。データベース系のサイトで勉強
# してくるべき内容です。

>・テーブル名は  シングルコーテーションではなく、[]で囲う
テーブル名だけしか指示されていませんよね?
データまで[]で囲ったためです。

>エラーになってしまします。
今回は、理由が見たら分かる程度の内容なのでいいですが、エラーについて
質問する場合は、エラーメッセージを書くことが必須事項です。
開発(実行)環境によって、同じエラーが発生するとは限らないからです。


VB初心者  2007-12-18 02:41:42  No: 138288

何とか、プログラムを作成することができました。
皆様、本当にありがとうございました。
また、何かありましたらアドバイスなどお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加