Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将Google输入类型的数字字符串转换为整数作为存储到MySql数据库?_C#_C# 4.0_C# 3.0_Facebook C# Sdk_C# 2.0 - Fatal编程技术网

C# 如何将Google输入类型的数字字符串转换为整数作为存储到MySql数据库?

C# 如何将Google输入类型的数字字符串转换为整数作为存储到MySql数据库?,c#,c#-4.0,c#-3.0,facebook-c#-sdk,c#-2.0,C#,C# 4.0,C# 3.0,Facebook C# Sdk,C# 2.0,我想将google输入的键入数字存储到列为整数的数据库中。当我想把它转换成整数时,它给了我一个错误:输入字符串的格式不正确。如何解决这个问题 MySqlConnection con = new MySqlConnection("Server=syits03-pc;Database=Demo;Uid=root;Pwd=kbabu4668;CharSet=utf8;"); con.Open(); MySqlCommand cmd = new MySqlCommand("insert into tbl

我想将google输入的键入数字存储到列为整数的数据库中。当我想把它转换成整数时,它给了我一个错误:输入字符串的格式不正确。如何解决这个问题

MySqlConnection con = new MySqlConnection("Server=syits03-pc;Database=Demo;Uid=root;Pwd=kbabu4668;CharSet=utf8;");
con.Open();
MySqlCommand cmd = new MySqlCommand("insert into tblnew(str,num,numstr) values(@str,@num,@numstr)", con);
cmd.Parameters.AddWithValue("@str", textBox1.Text);
MySqlCommand cmd1= new MySqlCommand("Select str from tblnew where id=1",con);
cmd.Parameters.AddWithValue("@num", Convert.ToInt32(cmd1.ExecuteScalar().ToString()));
cmd.Parameters.AddWithValue("@numstr", textBox3.Text);
object obj= cmd.ExecuteNonQuery();
con.Close();
if (obj != null)
{
    MessageBox.Show("Inserted");
}

看起来您的cmd.executescalar有时可能返回null,该值被tostring()函数转换为“”,这可能是出现错误的原因。如果您不确定输入是否正确,您可以始终尝试使用int.TryParse()。请在使用前阅读有关该函数的信息。

尝试此

使用(SqlConnection con=newsqlconnection(“Server=syits03-pc;Database=Demo;Uid=root;Pwd=kbabu4668;CharSet=utf8;”)
{
SqlCommand cmd1=新SqlCommand(“从tblnew中选择top 1 str,其中id为-1”,con);
string num=cmd1.ExecuteScalar().ToString();
string cmdText=string.Concat(“插入tblnew(str,num,numstr)值(“,textBox1.Text,”,“,num,”,”,textBox3.Text,”);
SqlCommand cmd=新的SqlCommand(cmdText,con);
cmd.ExecuteNonQuery();
}
您应该考虑的一些可能问题包括:

  • 如果cmd1没有返回任何内容,因此将空白值传递给@num,该怎么办
  • cmd.ExecuteNonQuery()并不打算返回任何内容,因此将其分配给对象可能不是最好的方法。相反,你可以尝试一下。e、 g.
    试试看
    {
    cmd.ExecuteNonQuery();
    MessageBox.Show(“插入”);
    }
    捕获(例外情况除外)
    {
    Show(“存储的过程失败,错误为:+ex.ToString());
    }

大概是
Convert.ToInt32
引发的;那么:什么是
cmd1.ExecuteScalar().ToString()
,您的机器运行在什么文化中?(如果这是区域性格式问题)。如果您只执行
cmd.Parameters.AddWithValue(“@num”,cmd1.ExecuteScalar()”),它是否不起作用?@Marc Gravell那么如何解决这种文化形成问题示例:不要将数字视为字符串;或者如果必须:将正确的区域性传递给格式化/解析方法