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です
回答2件
あなたの回答
tips
プレビュー