お世話になります。
情報管理画面を作成しているのですが、画像登録ではまってしまっています。
128行目のパラメータの部分で
CS0029 型 'System.Drawing.Image' を 'System.Data.DbType' に暗黙的に変換できません
上記のエラーが発生します。
画像やファイルを登録したことがなく、登録のしかたがいまいち理解できておりません。
ご教示のほどよろしくお願いいたします。
C#
using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SQLite; namespace 基幹システム.対人管理 { public partial class Taizintouroku : Form { public Taizintouroku() { InitializeComponent(); #region 対人コードを自動付番 DateTime CD = DateTime.Today.Date; System.Random r = new System.Random(1000); int i = r.Next(9); string ran = i.ToString(); string Day = CD.ToString(); string DayCD = Day.Substring(0, 10); string DayCD2 = DayCD.Replace('/',' '); //char[] removeChars = new Char[] { '\r', '\n' }; //foreach(char c in removeChars) //{ // DayCD = DayCD.Replace(c.ToString(), "/"); //} string KokyakuCd = ran + DayCD2; txttaizincd.Text = KokyakuCd; #endregion txttaizincd.Enabled = false; } public void button1_Click(object sender, EventArgs e) { //ダイアログを開く DialogResult dr = openFileDialog1.ShowDialog(); pictureBox1.Image = Image.FromFile(openFileDialog1.FileName); //ファイルのアドレスを取得 var pic = openFileDialog1.FileName; //バイト型に変更 byte[] gazou = File.ReadAllBytes(pic); if (dr == DialogResult.OK) { //string filepass = dr.GetType.filepass; } // var a = picpic; //return a; } private void btntouroku_Click(object sender, EventArgs e) { string dbpath = Application.StartupPath + @"\kabukanri.db"; using (SQLiteConnection con = new SQLiteConnection("Data Source=" + dbpath)) { con.Open(); DataTable datatable = new DataTable(); using (SQLiteTransaction trans = con.BeginTransaction()) { //給料テーブルinsert用 StringBuilder sql = new StringBuilder(); SQLiteCommand cmd = con.CreateCommand(); #region 対人テーブル insert文 sql.AppendLine("insert "); sql.AppendLine("into 対人テーブル( "); sql.AppendLine(" CD"); sql.AppendLine(" , 名前"); sql.AppendLine(" , 生年月日"); //sql.AppendLine(" , 年齢"); sql.AppendLine(" , 郵便番号"); sql.AppendLine(" , 住所"); sql.AppendLine(" , 顔写真"); sql.AppendLine(" , 性別"); sql.AppendLine(" , 備考"); sql.AppendLine(" , DEL_FLG"); sql.AppendLine(") "); sql.AppendLine("values ( "); sql.AppendLine(" @CD"); sql.AppendLine(" , @名前"); sql.AppendLine(" , @生年月日"); //sql.AppendLine(" , @年齢"); sql.AppendLine(" , @郵便番号"); sql.AppendLine(" , @住所"); sql.AppendLine(" , @顔写真"); sql.AppendLine(" , @性別"); sql.AppendLine(" , @備考"); sql.AppendLine(" , 0"); sql.AppendLine(")"); cmd.Parameters.Add("CD", System.Data.DbType.String); cmd.Parameters.Add("名前", System.Data.DbType.String); cmd.Parameters.Add("生年月日", System.Data.DbType.String); cmd.Parameters.Add("年齢", System.Data.DbType.String); cmd.Parameters.Add("郵便番号", System.Data.DbType.String); cmd.Parameters.Add("住所", System.Data.DbType.String); cmd.Parameters.Add("顔写真", System.Data.DbType.Binary); cmd.Parameters.Add("性別", System.Data.DbType.String); cmd.Parameters.Add("備考", System.Data.DbType.String); cmd.Parameters["CD"].Value = txttaizincd.Text; cmd.Parameters["名前"].Value = txtname.Text; cmd.Parameters["生年月日"].Value = txtsenedate.Text; //cmd.Parameters["年齢"].Value = txtage.Text; cmd.Parameters["郵便番号"].Value = txtadd.Text; cmd.Parameters["住所"].Value = txtzyusyo.Text; cmd.Parameters["顔写真"].DbType =pictureBox1.Image; if(radioButton1.Checked == true) { cmd.Parameters["性別"].Value = 1; } else if(radioButton2.Checked == true) { cmd.Parameters["性別"].Value = 2; } cmd.Parameters["備考"].Value = txtbiko.Text; cmd.CommandText = sql.ToString(); cmd.ExecuteNonQuery(); trans.Commit(); MessageBox.Show("登録が完了しました。"); #endregion } } } private void txtage_Validating(object sender, CancelEventArgs e) { } #region 年齢を出すメソッド private static int GetAge(DateTime txtsenedate, DateTime today) { int age = today.Year - txtsenedate.Year; //誕生日がまだ来ていなければ、1引く if (today.Month < txtsenedate.Month || (today.Month == txtsenedate.Month && today.Day < txtsenedate.Day)) { age--; } return age; } #endregion private void txtsenedate_Validated(object sender, EventArgs e) { #region 年齢を自動計算 if (txtsenedate.TextLength < 10) { //seinenTip = new ToolTip(this.components); seinenTip.SetToolTip(txtsenedate,"生年月日はYYYY/MM/DD形式で入力してください"); return; } string i = txtsenedate.Text; DateTime a = DateTime.Parse(i); DateTime birthDate = a; //現在の日付 DateTime today = DateTime.Today; //年齢を計算する int age = GetAge(birthDate, today); int age2 = age; txtage.Text = age2.ToString(); } #endregion private void txtsenedate_TextChanged(object sender, EventArgs e) { } private void button3_Click(object sender, EventArgs e) { } } }
128行目と言われても行番号を振ってないと分からないのですが。(行番号を振ってほしいと言っているわけではありません。どの行かわかるようにしてほしいだけです)
まだ回答がついていません
会員登録して回答してみよう