|
|
|
insert into error แบบนี้อะคับ ควรปรับเปลี่ยนตรงไหนยังไงบ้างคับ |
|
|
|
|
|
|
|
มี Spaces หรือเปล่าครับ
|
|
|
|
|
Date :
2010-08-06 13:25:05 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ในชื่อของ field Objetive_id เหมือนจะมีเว้นวรรคนะครับ
Objective _id
Objective_id
|
|
|
|
|
Date :
2010-08-06 13:26:28 |
By :
nprawit |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลบเว้นวรรคแล้วคับ แล้วก็เป็นอย่างนี้
|
|
|
|
|
Date :
2010-08-06 13:32:48 |
By :
adunafah |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
กำหนด length ใน database ไว้น้อยไปหรือเปล่าท่าน เช่น varchar(50) แต่ท่านป้อนค่าไป 500 character อะไรแบบเนี้ย
|
|
|
|
|
Date :
2010-08-06 14:02:15 |
By :
tungman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (VB.NET)
sqlTmp = "INSERT INTO Objective (Objective_id, Objective1, Money1, Objective2, Money2) "
sqlTmp &= "VALUES('" & txtobject_id.Text & "','" & txtobjective1.Text & "','" & CInt(txtmoney1.Text) & "','" & txtobjective2.Text & "','" & CInt(txtmoney2.Text) & "')"
'สร้างชุดคำสั่ง SQl เพื่อเลือกข้อมูล 1 เร็คคอร์ดล่าสุด จากตาราง Borrower
sqlTmp = "SELECT Max(Objective_id) FROM Objective"
'สร้างชุดคำสั่ง sql เพื่อเพิ่มข้อมูลลงในตาราง Borrower
sqlUpdate = "INSERT INTO Borrower (Borrower_id, Member_id, No_contracts, Project_name, Principal, Comments, Reasons, Borrower_name1, Borrower_id1, Borrower_prefix1, Borrower_number1, Borrower_name2, Borrower_id2, Borrower_prefix2, Borrower_number2, Paystatus, Interest, Place, Objective_id) "
sqlUpdate &= "VALUES('" & txtborrower_id.Text & "','" & txtmember_idb.Text & "','" & txtNo_Contract.Text & "','" & txtProject.Text & "',"
sqlUpdate &= "'" & CInt(txtSmoney.Text) & "','" & cbocomment.Text & "','" & txtreason.Text & "','" & txtnameb1.Text & "','" & txtmember_idb1.Text & "',"
sqlUpdate &= "'" & cboprefixb1.Text & "','" & txtNumber_Ca1.Text & "','" & txtnameb2.Text & "','" & txtmember_idb2.Text & "','" & cboprefixb2.Text & "',"
sqlUpdate &= "'" & txtnumber_Ca2.Text & "','" & cboPaystatus.Text & "','" & CInt(txtcrate.Text) & "','" & txtplace.Text & "','" & sqlTmp & "')" ********ตรงนี้อะคับ sqlTmp
ตรง sqlTmp = "SELECT Max(Objective_id) FROM Objective" ผมไม่เข้าใจว่าต้องทำไงอะคับมันเป็นการบันทึก 2 ตารางทีเดียวอะคับ
เวลาบันทึกมันจะเอา SELECT Max(Objective_id) FROM Objective บันทึกอะคับ
|
ประวัติการแก้ไข 2010-08-06 18:43:34 2010-08-06 19:50:28
|
|
|
|
Date :
2010-08-06 18:42:14 |
By :
adunafah |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ที่ถามน่ะ งงมากๆ เลยขอรับ select เกี่ยวอะไรกับบันทึก
แล้วกระทู้ก่อนยังใช้แบบ parameter อยู่เลย ทำไมกระทู้นี้ล่อให้ hacker ใช้ sql injection แล้วล่ะครับ
เขาอุตส่าห์ให้ใช้แบบ parameter เพื่อแก้ปัญหานี้แล้วแท้ๆ
|
|
|
|
|
Date :
2010-08-06 20:54:21 |
By :
tungman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (VB.NET)
"VALUES('" & txtborrower_id.Text
ครั้งหนึ่งเคยใส่แบบนี้ไปโดนด่าเลยครับ อิอิ
เปลี่ยนมาใช้ @ แทน
|
ประวัติการแก้ไข 2010-08-07 00:21:10
|
|
|
|
Date :
2010-08-07 00:20:38 |
By :
iheerman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ๋อ คุณพยายามจะทำแบบนี้
INSERT INTO [myTable] ( [label] ,[value] ) VALUES ('Sample' ,SELECT MAX(ID) FROM someTable);
ผิดค่ะ INSERT STATEMENT ไม่ได้นิยามแบบนั้น
แต่แก้ได้ด้วยแบบนี้
DECLARE @CapValue AS INT ;
-- PREVENT FOR NULL RECORD
SET @CapValue = 0;
SELECT @CapValue = MAX(ID) FROM someTable;
INSERT INTO [myTable] ( [label] ,[value] ) VALUES ('Sample' ,@CapValue );
แล้วถ้าพอมีเวลา น่าจะเปลี่ยนไปใช้แบบ command parameter นะคะ
|
ประวัติการแก้ไข 2010-08-07 05:14:24
|
|
|
|
Date :
2010-08-07 04:37:18 |
By :
blurEyes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลองเปลี่ยนเป็น แบบ parameter อะคับ(ผมไม่เคยใช้) เป็นตารางเล็กๆอะคับ
แล้วพอรัน แก้ไข เสร็จเปิดดูในฐานข้อมูล ข้อมูลเหมือนเดิมคับ
Code (VB.NET)
If MessageBox.Show("คุณต้องการแก้ไขข้อมูลพนักงาน ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
tr = conn.BeginTransaction()
Try
sb.Remove(0, sb.Length)
sb.Append("UPDATE Address")
sb.Append(" SET Moo=@Moo,")
sb.Append(" Village_name=@Village_name,")
sb.Append(" Sub=@Sub,")
sb.Append(" District=@District,")
sb.Append(" Province=@Province,")
sb.Append(" Zip=@Zip")
sb.Append(" WHERE (Address_id=@Address_id)")
Dim sqlOK As String
sqlOK = sb.ToString()
With Com
.CommandText = sqlOK
.Transaction = tr
.Parameters.Clear()
.Parameters.Add("@Address_id", OleDbType.VarChar).Value = txtid_addr.Text.Trim()
.Parameters.Add("@Moo", OleDbType.VarChar).Value = txtmoo.Text.Trim()
.Parameters.Add("@Village_name", OleDbType.VarChar).Value = txtvillage.Text.Trim()
.Parameters.Add("@Sub", OleDbType.VarChar).Value = txtsub.Text.Trim()
.Parameters.Add("@District", OleDbType.VarChar).Value = txtDistrict.Text.Trim()
.Parameters.Add("@Province", OleDbType.VarChar).Value = txtprovince.Text.Trim()
.Parameters.Add("@Zip", OleDbType.VarChar).Value = txtzip.Text.Trim()
.ExecuteNonQuery()
End With
tr.Commit()
MessageBox.Show("แก้ไขข้อมูลพนักงาน เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show("เกิดข้อผิดพลาด ", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
tr.Rollback()
End Try
Call RefreshData() 'ดึงข้อมูลล่าสุดมาแสดง
End If
|
|
|
|
|
Date :
2010-08-07 12:29:21 |
By :
adunafah |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (VB.NET)
If MessageBox.Show("คุณต้องการแก้ไขข้อมูลพนักงาน ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
tr = conn.BeginTransaction()
sb.Remove(0, sb.Length)
sb.Append("UPDATE [Address]")
sb.Append(" SET [Moo]=@Moo,")
sb.Append(" [Village_name]=@Village_name,")
sb.Append(" [Sub]=@Sub,")
sb.Append(" [District]=@District,")
sb.Append(" [Province]=@Province,")
sb.Append(" [Zip]=@Zip")
sb.Append(" WHERE ([Address_id]=@Address_id)")
Dim sqlOK As String
sqlOK = sb.ToString()
Com.CommandText = sqlOK
Com.Transaction = tr
Com.Parameters.Clear()
Com.Parameters.Add("@Address_id", OleDbType.VarChar).Value = txtid_addr.Text.Trim()
Com.Parameters.Add("@Moo", OleDbType.VarChar).Value = txtmoo.Text.Trim()
Com.Parameters.Add("@Village_name", OleDbType.VarChar).Value = txtvillage.Text.Trim()
Com.Parameters.Add("@Sub", OleDbType.VarChar).Value = txtsub.Text.Trim()
Com.Parameters.Add("@District", OleDbType.VarChar).Value = txtDistrict.Text.Trim()
Com.Parameters.Add("@Province", OleDbType.VarChar).Value = txtprovince.Text.Trim()
Com.Parameters.Add("@Zip", OleDbType.VarChar).Value = txtzip.Text.Trim()
Try
Com.ExecuteNonQuery()
tr.Commit()
MessageBox.Show("แก้ไขข้อมูลพนักงาน เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(String.Format("เกิดข้อผิดพลาดเนื่องจาก {0} ", ex.Message), "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
tr.Rollback()
End Try
Call RefreshData() 'ดึงข้อมูลล่าสุดมาแสดง
End If
|
ประวัติการแก้ไข 2010-08-07 13:03:26
|
|
|
|
Date :
2010-08-07 13:02:02 |
By :
tungman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลอง add watch แล้วได้ตามนี้คับ ไม่มีข้อมูลที่จะบันทึกเลยอะคับ
UPDATE Address SET Moo=@Moo, Village_name=@Village_name, Sub=@Sub, District=@District, Province=@Province, Zip=@Zip WHERE (Address_id=@Address_id)
ฐานข้อมูลเลยไม่เปลี่ยนแปลง
พอรันใน Access มันให้ใส่ ค่าพารามิเตอร์คับ
|
|
|
|
|
Date :
2010-08-07 13:39:02 |
By :
adunafah |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
Com.CommandText = sqlOK
Com.Connection = conn
Com.Transaction = tr
Com.Parameters.Clear()
Com.Parameters.Add("@Address_id", OleDbType.VarChar).Value = txtid_addr.Text.Trim()
Com.Parameters.Add("@Moo", OleDbType.VarChar).Value = txtmoo.Text.Trim()
Com.Parameters.Add("@Village_name", OleDbType.VarChar).Value = txtvillage.Text.Trim()
Com.Parameters.Add("@Sub", OleDbType.VarChar).Value = txtsub.Text.Trim()
Com.Parameters.Add("@District", OleDbType.VarChar).Value = txtDistrict.Text.Trim()
Com.Parameters.Add("@Province", OleDbType.VarChar).Value = txtprovince.Text.Trim()
Com.Parameters.Add("@Zip", OleDbType.VarChar).Value = txtzip.Text.Trim()
|
|
|
|
|
Date :
2010-08-07 14:15:50 |
By :
tungman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|