DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ADO.NETにて数値のパラメータ受け渡しが出来ない

環境/言語:[.NET Framework1.1 C#]
分類:[.NET]

こんにちわ。
ADO.NETにてACCESS2000のMDBを更新したいのですがOleDbCommandにパラメータを渡し
INSERT文を実行しようと思うのですがパラメータが数値だとエラーになってしまいます。どのようにすれば数値のパラメータを受入れる事が出来るのでしょうか?
よろしくお願いいたします。
なおパラメータに代入する値は別フォームより取得しています。

private void button3_Click(object sender, System.EventArgs e)
{
//追加更新フォームをモーダルで開く
Form2 F = new Form2();
F.ShowDialog(this);

string SYO_CODE = F.SYO_CODE.Text;
string SYO_NAME = F.SYO_NAME.Text;
string SYO_KIKAKU = F.SYO_KIKAKU.Text;

//*数値型の部分(単価)
int SYO_COST = int.Parse(F.SYO_COST.Text);

string SQL="";
string strConn;

F.Dispose();

if(DATA_SOURCE.Text != String.Empty)
{

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;";
strConn += "Data Source=C:\hoge.mdb";

OleDbConnection CONN = new OleDbConnection(strConn);

SQL = "INSERT INTO OSYOMF(品番,品名,規格,価格) VALUES";
SQL +="(@SYO_CODE,@SYO_NAME,@SYO_KIKAKU,@SYO_COST)";

OleDbCommand CMD = new OleDbCommand(SQL,CONN);

//方法1(成功)
OleDbParameter P = new OleDbParameter("@SYO_CODE",SYO_CODE);
CMD.Parameters.Add(P);

//方法2(成功)
CMD.Parameters.Add("@SYO_NAME",SYO_NAME);
CMD.Parameters.Add("@SYO_KIKAKU",SYO_KIKAKU);

//*(失敗)
CMD.Parameters.Add("@SYO_COST",SYO_COST);

CONN.Open();

int NUM = CMD.ExecuteNonQuery();
MessageBox.Show(NUM.ToString());

CONN.Close();
}
}
お騒がせしました。コントロール名がSYO_COSTがSYS_COSTになってました。
すみませんでした。

■No2840に返信(jsさんの記事)
> こんにちわ。
> ADO.NETにてACCESS2000のMDBを更新したいのですがOleDbCommandにパラメータを渡し
> INSERT文を実行しようと思うのですがパラメータが数値だとエラーになってしまいます。どのようにすれば数値のパラメータを受入れる事が出来るのでしょうか?
> よろしくお願いいたします。
> なおパラメータに代入する値は別フォームより取得しています。
>
> private void button3_Click(object sender, System.EventArgs e)
> {
> //追加更新フォームをモーダルで開く
> Form2 F = new Form2();
> F.ShowDialog(this);
>
> string SYO_CODE = F.SYO_CODE.Text;
> string SYO_NAME = F.SYO_NAME.Text;
> string SYO_KIKAKU = F.SYO_KIKAKU.Text;
>
> //*数値型の部分(単価)
> int SYO_COST = int.Parse(F.SYO_COST.Text);
>
> string SQL="";
> string strConn;
>
> F.Dispose();
>
> if(DATA_SOURCE.Text != String.Empty)
> {
>
> strConn = "Provider=Microsoft.Jet.OLEDB.4.0;";
> strConn += "Data Source=C:\hoge.mdb";
>
> OleDbConnection CONN = new OleDbConnection(strConn);
>
> SQL = "INSERT INTO OSYOMF(品番,品名,規格,価格) VALUES";
> SQL +="(@SYO_CODE,@SYO_NAME,@SYO_KIKAKU,@SYO_COST)";
>
> OleDbCommand CMD = new OleDbCommand(SQL,CONN);
>
> //方法1(成功)
> OleDbParameter P = new OleDbParameter("@SYO_CODE",SYO_CODE);
> CMD.Parameters.Add(P);
>
> //方法2(成功)
> CMD.Parameters.Add("@SYO_NAME",SYO_NAME);
> CMD.Parameters.Add("@SYO_KIKAKU",SYO_KIKAKU);
>
> //*(失敗)
> CMD.Parameters.Add("@SYO_COST",SYO_COST);
>
> CONN.Open();
>
> int NUM = CMD.ExecuteNonQuery();
> MessageBox.Show(NUM.ToString());
>
> CONN.Close();
> }
> }
>
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板