質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

1412閲覧

Windowsフォームアプリでのsqlサーバーへのindert文でエラーが出ます

fko

総合スコア2

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/07/20 03:26

SQLに予定を入力しあって予定帳を共有するWindowsフォームアプリを作成しています。

WindowsフォームからINSERT文を用いてID,名前、日程、時間帯ごとに空いていたら〇、逆なら×を送信するアプリとなります。

string sql = "insert into Table1(Id,formid,name,year,month,day,1:00,2:00,3:00,4:00,5:00,6:00,7:00,8:00,9:00,10:00,11:00,12:00,13:00,14:00,15:00,16:00,17:00,18:00,19:00,20:00,21:00,22:00,23:00,24:00) VALUES(@ID,@formid,@name,@year,@month,@day,@1:00,@2:00,@3:00,@4:00,@5:00,@6:00,@7:00,@8:00,@9:00,@10:00,@11:00,@12:00,@13:00,@14:00,@15:00,@16:00,@17:00,@18:00,@19:00,@20:00,@21:00,@22:00,@23:00,@24:00)"; try { using (SqlConnection conn = new SqlConnection()) { conn.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\s192285.TSITCL\source\repos\practice2\practice2\practice.mdf;Integrated Security=True"; conn.Open(); using (SqlTransaction transaction = conn.BeginTransaction()) { try { using (SqlCommand cmd = new SqlCommand(sql, conn, transaction)) { String day = dateTimePicker2.Text; string[] lines = day.Split('/'); int formid = Int32.Parse(textBox2.Text); String name = textBox3.Text; cmd.Parameters.Add(new SqlParameter( "@ID", SqlDbType.Int)).Value = cnt+1; cmd.Parameters.Add(new SqlParameter( "@formid", SqlDbType.Int)).Value = formid; cmd.Parameters.Add(new SqlParameter( "@name", SqlDbType.NVarChar)).Value = name; cmd.Parameters.Add(new SqlParameter( "@year", SqlDbType.NVarChar)).Value = lines[0]; cmd.Parameters.Add(new SqlParameter( "@month", SqlDbType.NVarChar)).Value = lines[1]; cmd.Parameters.Add(new SqlParameter( "@day", SqlDbType.NVarChar)).Value = lines[2]; cmd.Parameters.Add(new SqlParameter( "@1:00", SqlDbType.NVarChar)).Value = button2.Text; cmd.Parameters.Add(new SqlParameter( "@2:00", SqlDbType.NVarChar)).Value = button4.Text; cmd.Parameters.Add(new SqlParameter( "@3:00", SqlDbType.NVarChar)).Value = button5.Text; cmd.Parameters.Add(new SqlParameter( "@4:00", SqlDbType.NVarChar)).Value = button6.Text; cmd.Parameters.Add(new SqlParameter( "@5:00", SqlDbType.NVarChar)).Value = button7.Text; cmd.Parameters.Add(new SqlParameter( "@6:00", SqlDbType.NVarChar)).Value = button8.Text; cmd.Parameters.Add(new SqlParameter( "@7:00", SqlDbType.NVarChar)).Value = button9.Text; cmd.Parameters.Add(new SqlParameter( "@8:00", SqlDbType.NVarChar)).Value = button10.Text; cmd.Parameters.Add(new SqlParameter( "@9:00", SqlDbType.NVarChar)).Value = button11.Text; cmd.Parameters.Add(new SqlParameter( "@10:00", SqlDbType.NVarChar)).Value = button12.Text; cmd.Parameters.Add(new SqlParameter( "@11:00", SqlDbType.NVarChar)).Value = button13.Text; cmd.Parameters.Add(new SqlParameter( "@12:00", SqlDbType.NVarChar)).Value = button14.Text; cmd.Parameters.Add(new SqlParameter( "@13:00", SqlDbType.NVarChar)).Value = button15.Text; cmd.Parameters.Add(new SqlParameter( "@14:00", SqlDbType.NVarChar)).Value = button16.Text; cmd.Parameters.Add(new SqlParameter( "@15:00", SqlDbType.NVarChar)).Value = button17.Text; cmd.Parameters.Add(new SqlParameter( "@16:00", SqlDbType.NVarChar)).Value = button18.Text; cmd.Parameters.Add(new SqlParameter( "@17:00", SqlDbType.NVarChar)).Value = button19.Text; cmd.Parameters.Add(new SqlParameter( "@18:00", SqlDbType.NVarChar)).Value = button20.Text; cmd.Parameters.Add(new SqlParameter( "@19:00", SqlDbType.NVarChar)).Value = button21.Text; cmd.Parameters.Add(new SqlParameter( "@20:00", SqlDbType.NVarChar)).Value = button22.Text; cmd.Parameters.Add(new SqlParameter( "@21:00", SqlDbType.NVarChar)).Value = button23.Text; cmd.Parameters.Add(new SqlParameter( "@22:00", SqlDbType.NVarChar)).Value = button24.Text; cmd.Parameters.Add(new SqlParameter( "@23:00", SqlDbType.NVarChar)).Value = button25.Text; cmd.Parameters.Add(new SqlParameter( "@24:00", SqlDbType.NVarChar)).Value = button26.Text; cmd.ExecuteNonQuery(); transaction.Commit(); cmd.Dispose(); conn.Close(); #ここでcatchに飛びます dataGridView1.AllowUserToAddRows = false; /*table1TableAdapter.Insert(cnt+1, formid, name, lines[0], lines[1], lines[2],button2.Text, button4.Text, button5.Text, button6.Text, button7.Text, button8.Text, button9.Text, button10.Text, button11.Text, button12.Text, button13.Text, button14.Text, button15.Text, button16.Text, button17.Text, button18.Text, button19.Text, button20.Text, button21.Text, button22.Text, button23.Text, button24.Text, button25, Text, button26.Text); */dataGridView1.Rows.Add(cnt+1, formid, name, lines[0], lines[1], lines[2], button2.Text, button4.Text, button5.Text, button6.Text, button7.Text, button8.Text, button9.Text, button10.Text, button11.Text, button12.Text, button13.Text, button14.Text, button15.Text, button16.Text, button17.Text, button18.Text, button19.Text, button20.Text, button21.Text, button22.Text, button23.Text, button24.Text, button25, Text, button26.Text); } } catch (Exception ex) { transaction.Rollback(); Console.WriteLine(ex.ToString()); } } } } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); } }

trycacthを無しで実行してみたところ以下のエラーが表示されました。
Error Number: 102、State: 1、Class: 15</ExceptionString><DataItems><Data><Key>HelpLink.ProdName</Key><Value>Microsoft SQL Server</Value></Data><Data><Key>HelpLink.ProdVer</Key><Value>13.00.4001</Value></Data><Data><Key>HelpLink.EvtSrc</Key><Value>MSSQLServer</Value></Data><Data><Key>HelpLink.EvtID</Key><Value>102</Value></Data><Data><Key>HelpLink.BaseHelpUrl</Key><Value>http://go.microsoft.com/fwlink</Value></Data><Data><Key>HelpLink.LinkId</Key><Value>20476</Value></Data></DataItems></Exception></TraceRecord>
型 'System.Data.SqlClient.SqlException' のハンドルされていない例外が System.Data.dll で発生しました
Incorrect syntax near ':'.
Incorrect syntax near '1'.

開発環境はVisual Studio 2019です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

juner

2021/07/20 04:15

タイトルの indert文 → insert文 では
m.ts10806

2021/07/20 06:35

DBの種類バージョンも明記してください。質問タグにも追加を。
guest

回答2

0

自己解決

カラム名が「1:00」や「1」だとうまく動かなかったが「one」にしたら問題が解決された

投稿2021/07/21 05:05

fko

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

「1:00」~「24:00」ってテーブルのカラム名なのですか?
そのまま書くと文法エラーになるでしょうから、
"1:00"などと表記してみたらどうでしょうか。

投稿2021/07/20 03:56

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2021/07/20 04:14

SQLServerであれば[]で囲む形になるかと
退会済みユーザー

退会済みユーザー

2021/07/20 04:22

そうでした。ご指摘ありがとうございます。 参考:SQL - SQL文のテーブルもしくは列名に[]をつけるのはどういう意味か|teratail https://teratail.com/questions/68572
fko

2021/07/21 05:04

申し訳ございません。カラム名を「1:00」から「one」などに変更したところ問題が解決しました。 回答していただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問