System.Data.SqlClient.SqlException: 'Conversion failed when converting the nvarchar value to data type int.'
System.Data.SqlClient.SqlException: 'Conversion failed when converting the nvarchar value to data type int.'
我已经创建了一个数据库,我正在尝试 INSERT INTO TABLE
使用以下代码:
string sqlquery = "INSERT INTO Runner VALUES (@firstName, @lastName, @amount, @category, @city, @charity, @route)";
cmd = new SqlCommand(sqlquery, conn);
conn.Open();
cmd.Parameters.AddWithValue("@firstName", txtFirstName.Text.ToString());
cmd.Parameters.AddWithValue("@lastName", txtLastName.Text.ToString());
cmd.Parameters.AddWithValue("@amount", Convert.ToInt32(txtMoney.Text));
cmd.Parameters.AddWithValue("@category", cbBoxCategory.ValueMember);
cmd.Parameters.AddWithValue("@city", cbBoxCity.ValueMember);
cmd.Parameters.AddWithValue("@charity", cbBoxCharity.ValueMember);
cmd.Parameters.AddWithValue("@route", cbBoxRoute.ValueMember);
cmd.ExecuteNonQuery();
conn.Close();
当我 运行 它时,我得到这个错误:
System.Data.SqlClient.SqlException: 'Conversion failed when converting the nvarchar value 'id' to data type int.'
我所有的cbBox
(comboBox)都需要留一个INT
,我明白是需要转换成NVARCHAR
到INT
,我试着用Convert.Into32(cbBox.Category.ValueMember)
但没有成功。
我尝试了所有方法都没有成功。
在寻找其他人的答案后,我找到了这个解决方案。
string sqlquery = "INSERT INTO Runner (firstName, lastName, amount, categoryID, cityID, charityID, routeID) VALUES (@firstName, @lastName, @amount, @category, @city, @charity, @route)";
cmd = new SqlCommand(sqlquery, conn);
conn.Open();
cmd.Parameters.Add("@firstName", SqlDbType.VarChar, 50).Value = txtFirstName.Text;
cmd.Parameters.Add("@lastName", SqlDbType.VarChar, 50).Value = txtLastName.Text;
cmd.Parameters.Add("@amount", SqlDbType.Int).Value = txtMoney.Text;
cmd.Parameters.Add("@category", SqlDbType.Int).Value = cbBoxCategory.SelectedValue;
cmd.Parameters.Add("@city", SqlDbType.Int).Value = cbBoxCity.SelectedValue;
cmd.Parameters.Add("@charity", SqlDbType.Int).Value = cbBoxCharity.SelectedValue;
cmd.Parameters.Add("@route", SqlDbType.Int).Value = cbBoxRoute.SelectedValue;
cmd.ExecuteNonQuery();
MessageBox.Show("New Runner has been registered!");
conn.Close();
通过使用Convert.ToInt32(cbBoxRoute.SelectedValue)
这里是 link 我找到解决方案的地方:
Insert ID into SQL from C# Combo box
我已经创建了一个数据库,我正在尝试 INSERT INTO TABLE
使用以下代码:
string sqlquery = "INSERT INTO Runner VALUES (@firstName, @lastName, @amount, @category, @city, @charity, @route)";
cmd = new SqlCommand(sqlquery, conn);
conn.Open();
cmd.Parameters.AddWithValue("@firstName", txtFirstName.Text.ToString());
cmd.Parameters.AddWithValue("@lastName", txtLastName.Text.ToString());
cmd.Parameters.AddWithValue("@amount", Convert.ToInt32(txtMoney.Text));
cmd.Parameters.AddWithValue("@category", cbBoxCategory.ValueMember);
cmd.Parameters.AddWithValue("@city", cbBoxCity.ValueMember);
cmd.Parameters.AddWithValue("@charity", cbBoxCharity.ValueMember);
cmd.Parameters.AddWithValue("@route", cbBoxRoute.ValueMember);
cmd.ExecuteNonQuery();
conn.Close();
当我 运行 它时,我得到这个错误:
System.Data.SqlClient.SqlException: 'Conversion failed when converting the nvarchar value 'id' to data type int.'
我所有的cbBox
(comboBox)都需要留一个INT
,我明白是需要转换成NVARCHAR
到INT
,我试着用Convert.Into32(cbBox.Category.ValueMember)
但没有成功。
我尝试了所有方法都没有成功。
在寻找其他人的答案后,我找到了这个解决方案。
string sqlquery = "INSERT INTO Runner (firstName, lastName, amount, categoryID, cityID, charityID, routeID) VALUES (@firstName, @lastName, @amount, @category, @city, @charity, @route)";
cmd = new SqlCommand(sqlquery, conn);
conn.Open();
cmd.Parameters.Add("@firstName", SqlDbType.VarChar, 50).Value = txtFirstName.Text;
cmd.Parameters.Add("@lastName", SqlDbType.VarChar, 50).Value = txtLastName.Text;
cmd.Parameters.Add("@amount", SqlDbType.Int).Value = txtMoney.Text;
cmd.Parameters.Add("@category", SqlDbType.Int).Value = cbBoxCategory.SelectedValue;
cmd.Parameters.Add("@city", SqlDbType.Int).Value = cbBoxCity.SelectedValue;
cmd.Parameters.Add("@charity", SqlDbType.Int).Value = cbBoxCharity.SelectedValue;
cmd.Parameters.Add("@route", SqlDbType.Int).Value = cbBoxRoute.SelectedValue;
cmd.ExecuteNonQuery();
MessageBox.Show("New Runner has been registered!");
conn.Close();
通过使用Convert.ToInt32(cbBoxRoute.SelectedValue)
这里是 link 我找到解决方案的地方:
Insert ID into SQL from C# Combo box