scmd1.CommandText = "insert into books (bookname,Price,quantity,categoryid) values('"+ this.textBox1.Text +"',"+ Convert.ToInt32(this.textBox2.Text) +",'"+ this.textBox3.Text +"',’"+ a +"‘)";
            scmd1.ExecuteNonQuery();这是我的代码为什么Price的Value必须没有''而categoryid就可以有呢?Price的数据库类型为Money ,categoryid的数据库类型为int。 a 是 int 型的
如果把Price的Value代码加上''就出现 “不允许从数据类型 varchar 到数据类型 money 的隐性转换(表 'BookStore.dbo.Books',列 'Price')。请使用 CONVERT 函数来运行此查询。” 的sqlException

解决方案 »

  1.   

    float之类的浮点数在默认情况下是不能直接从字符串转换的。\scmd1.CommandText = "insert into books (bookname,Price,quantity,categoryid) values(cast('"+ this.textBox1.Text +"' as money),"+ Convert.ToInt32(this.textBox2.Text) +",'"+ this.textBox3.Text +"',’"+ a +"‘)";
                scmd1.ExecuteNonQuery(); 
      

  2.   


    scmd1.CommandText = "insert into books (bookname,Price,quantity,categoryid) values('"+ this.textBox1.Text +"',"+ float.Parse(this.textBox2.Text) +",'"+ this.textBox3.Text +"',’"+ a +"‘)";
      

  3.   

    你最好 先判断一下 是否通过try
    {
    scmd1.CommandText = "insert into books (bookname,Price,quantity,categoryid) values('"+ this.textBox1.Text +"',"+ float.Parse(this.textBox2.Text) +",'"+ this.textBox3.Text +"',’"+ a +"‘)";
    }catch
    {}
      

  4.   

    scmd1.CommandText = "insert into books (bookname,Price,quantity,categoryid) values('"+ this.textBox1.Text +"',"+ float.Parse(this.textBox2.Text) +",'"+ this.textBox3.Text +"',’"+ a +"‘)";
      

  5.   

    没有Float浮点数啊  我就是问问为什么向数据库Money型的插入数据就必须没有''单引号,而int的型的有没有都可以呢