我是vb.net的新手,我有sqlcommand字符串,如下所示
Dim query As [String] = "insert into tblDefProducts( Creation_Date, Product_code,line_item_id , item_name , category_id , subcategory_id , Gender ,LifeType, supplier_id , Acquire_type , Purchase_type , Manufacture_type , Pur_Con_Unit, Pur_Con_factor ,Tax_At_Retail_Price, Sale_Tax ,Average_cost ,Product_group_id,status,Technical_details ) values( " & DateTimePicker2.Value.ToString() & ",'" & PCode_TXT.Text & "','" & LineItem_TXT.Text & "' , '" & PName_TXT.Text & "','" & CategoryM_CMB.Text & "','" & CategoryS_CMB.Text & "','" & ProductGender_TXT.Text & "', '" & ProductLifeT_CMD.Text & "','" & ProductSupplier_CMB.Text & "','" & PAquireType_CMB.Text & "', '" & PPurchaseType_CMB.Text & "','" & PManufacturing_CMB.Text & "','" & PConnUnit_CMB.Text & "' ," & Convert.ToInt32(PConFactory_TXT.Text) & "," & Convert.ToInt32(PSalesTaxPurchase_TXT.Text) & "," & Convert.ToInt32(PSalesTaxSales_TXT.Text) & "," & Convert.ToInt32(PPRICE_TXT.Text) & " , " & PTypeA & " , " & pActive & ",'" & PTechnicalDetail_TXT.Text & "')"
2个问题
输入字符串格式不正确,第二次将datetime值从datetimepicker1插入数据库列creation_date的数据类型为DateTime,但datetimepicker给出的值是 #1/1/1900#, 也必须使用sql进行解析
由于许多原因,使用字符串替换来传递参数不是一个好主意:它容易受到SQL Injection攻击的影响,更容易出错并且更难以阅读和维护。
在您的问题中,问题很可能是由于您的某些价值观缺少“”。
想象一下,如果您只希望用户能够更新表中的某些字段,但是用户在文本框中输入了诸如“ Hello”,ReadOnlyField =’World之类的内容,然后将其合并到查询中。ReadOnlyField世界将被更新。使用参数可以避免这种情况。
如果您使用参数,则无需担心’‘,因为参数是类型变量而不是字符串。
您也不需要将所有内容都转换为字符串,因为大多数.NET primitves具有SQL等效项。
请参阅此处以获取有关VB.Net SqlCommand.Parameters的示例和文档
https://msdn.microsoft.com/zh- CN/library/system.data.sqlclient.sqlcommand.parameters%28v=vs.110%29.aspx