我正在编写与mysql连接的C#程序。在我的sql中,我有两个表,一个叫做car,另一个叫做model。在我的car表中,我有一个名为modele_vehiclue的列,数据类型为int,也是一个外键。第二个表名为model,由两列组成modele_vehiclue数据类型int和model_name varchar 问题开始时,我运行我的程序并在我的框中输入数据,它说你可以将int转换为var char值。这是我在c#中使用的代码。 如果你能帮我解决这个问题,你就是在为我的一天做好准备。
Array
(
[2017-03-17,2017-03-23] => Mar 17-23, 2017
[2017-03-10,2017-03-16] => Mar 10-16, 2017
[2017-03-03,2017-03-09] => Mar 3-9, 2017
[2017-02-24,2017-03-02] => Mar 24-2, 2017
[2017-02-17,2017-02-23] => Feb 17-23, 2017
)
答案 0 :(得分:1)
我认为在这种情况下Parameters.Add
更适合指定值的DataType。为此,您可以使用SqlDbType Enumeration,也可以使用int.Parse()
或int.TryParse()
进行解析。所以你可以尝试这样的事情:
int modele = 0;
if(int.TryParse(modele_vehiclue.Text, out modele)
{
cmd.Parameters.Add("@modele", SqlDbType.Int).Value = modele;
}
else
{
// display message that invalid input
}
答案 1 :(得分:0)
正确地回答这个问题。
将字符串转换为int
使用各种内置方法之一,例如。
,可以轻松完成 int.Parse(string s)
:这会尝试将传递的值s
转换为int
(Int32
)。如果输入字符串s
不是有效的int,则将抛出异常FormatException
此处列出了多个覆盖int.Parse Method
现在关键是字符串必须是有效的int表示其他任何内容都会抛出FormatException
所以这可以用作
cmd.Parameters.Add(new SqlParameter("@modele ", int.Parse(modele_vehiclue.Text)));
如何安全验证字符串
现在我们刚刚声明字符串必须是一个有效的int表示,以便成功。现在,如果您不是100%确定modele_vehiclue.Text
属性的值是int的有效字符串表示,那么您应该首先验证它。
幸运的是,这很容易。有一个称为int.TryParse(string s, out int result
方法的内置方法,它返回Boolean
结果(不是int)。
所以这可以用作。
int modele = 0;
//int.TryParse returns a true\false on operation success. The value of modele will be the converted int or zero if the operation failed.
if(int.TryParse(modele_vehiclue.Text, out modele) == true)
{
//conversion success
cmd.Parameters.Add(new SqlParameter("@modele ", modele);
}
else
{
//handle failed conversion
throw new Exception("modele_vehiclue.Text must be an int");
}