Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > C# Error เมื่อใช้ ExecuteNonQuery...Violation of PRIMARY KEY constraint 'PK_Masterdata'. Cannot insert duplicate key in object 'dbo.datapeople'



 

C# Error เมื่อใช้ ExecuteNonQuery...Violation of PRIMARY KEY constraint 'PK_Masterdata'. Cannot insert duplicate key in object 'dbo.datapeople'

 



Topic : 043569



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์




Error เมื่อใช้ ExecuteNonQuery แต่ข้อมูลเข้า
พอไม่ใช้ ไม่ Error ข้อมูลเข้าปกติดี

ใช้ windows7 VC#2008 SQL2005 Expess

Code (C#)
{
//เพิ่มข้อมูลในฐานข้อมูล

            string strConn = "Data Source = .\\SqlExpress;Initial Catalog=datatest;Integrated Security=true";
            Conn = new SqlConnection();
            if (Conn.State == ConnectionState.Open)
            {
                Conn.Close();
            }
            Conn.ConnectionString = strConn;
            Conn.Open();

            DataSet dat = new DataSet();
            SqlCommand cmd;
            SqlDataAdapter ad;
            string sret = "insert into datapeople(IDsick,IDpeople,firsname,lastname,address,mou,street,tambom,aumpuer,province,Birthday,age,sex)"+
            "values(@add00,@add1,@add2,@add3,@add4,@add5,@add6,@add7,@add8,@add9,@add10,@add11,@add12)";
            cmd = new SqlCommand(sret, Conn);
            cmd.Parameters.AddWithValue("add1", maskedTextBox5.Text);
            cmd.Parameters.AddWithValue("add2", textBox9.Text);
            cmd.Parameters.AddWithValue("add3", textBox19.Text);
            cmd.Parameters.AddWithValue("add4", textBox10.Text);
            cmd.Parameters.AddWithValue("add5", textBox11.Text);
            cmd.Parameters.AddWithValue("add6", textBox12.Text);
            cmd.Parameters.AddWithValue("add7", textBox13.Text);
            cmd.Parameters.AddWithValue("add8", textBox14.Text);
            cmd.Parameters.AddWithValue("add9", textBox15.Text);
            cmd.Parameters.AddWithValue("add10", maskedTextBox6.Text);
            cmd.Parameters.AddWithValue("add11", textBox17.Text);     
            cmd.Parameters.AddWithValue("add00", textBox18.Text);
         
            if(radioButton13.Checked == true)
            {
            cmd.Parameters.AddWithValue("add12","Male");
            }
            else if (radioButton14.Checked == true)
            {
                cmd.Parameters.AddWithValue("add12", "Female");
            }
            else
            {
                MessageBox.Show("โปรดกลับไปเลือกเพศ");
                Conn.Close();
            }
            ad = new SqlDataAdapter(cmd);
            ad.Fill(dat, "TTL");
            cmd.ExecuteNonQuery();
            Conn.Close();
            MessageBox.Show("สำเร็จ");


        }




Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-06-02 19:48:01 By : thaic View : 7684 Reply : 31
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

Error อะไรครับ ลองใข้ Tool Debug หรือ ครอบด้วย function try{} ครับ






Date : 2010-06-02 20:56:03 By : webmaster
 


 

No. 2



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


Code (C#)
cmd.Parameters.AddWithValue("add1", maskedTextBox5.Text);
....
....
cmd.Parameters.AddWithValue("add00", textBox18.Text);


เป็น

Code (C#)
cmd.Parameters.AddWithValue("@add1", maskedTextBox5.Text);
....
....
cmd.Parameters.AddWithValue("@add00", textBox18.Text);

Date : 2010-06-02 22:13:16 By : blurEyes
 

 

No. 3



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์




Code (C#)
Violation of PRIMARY KEY constraint 'PK_Masterdata'. Cannot insert duplicate key in object 'dbo.datapeople'.
The statement has been terminated.



Error แบบ นี้เลย
Date : 2010-06-02 23:20:49 By : thaic
 


 

No. 4



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ไปดู PK_Masterdata ว่าใช้ field ไหนเป็นหลักค่ะ
error แสดงว่า มีค่า primarykey ซ้ำกัน
Date : 2010-06-03 00:06:57 By : blurEyes
 


 

No. 5



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


ยังไม่มีข้อมูลเลย ครับ ไม่ซ้ำแน่นอน

IDsick >> คียหลัก
Date : 2010-06-03 00:28:25 By : thaic
 


 

No. 6



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบเองล่ะกัน - -* ไปถามคนใช้ทำงานจริง เขาบอกว่า

Code (C#)
SqlCommand cmd;

SqlDataAdapter ad;





2อันนี้ ใช้อย่างใด อย่างหนึ่งผมก็ไม่รู้ทำตามหนังสือ อ่ะเนอะ
ที่นี้ เราไม่จำเป็นต้องใส่ cmd.ExecuteNonQuery(); เพราะ
ผมใช้ SqlDataAdapter ไม่จำเป็นต้องเปิดและปิด Connection "Adapter" มันทำด้วยตัวเองอยู่แล้ว

Code (C#)
SqlDataAdapter 
ad.Fill(dat, "TTL");



ถ้าเกิดผมใส่ cmd.ExecuteNonQuery(); เข้าไปมันจะ Error เพราะมันส่งข้อมูลซ้ำซ้อนเลยดูเหมือน ใส่ ข้อมูล คีย์หลักซ้ำ
แต่ถ้าใช้ command อย่างเดียวต้องใช้ cmd.ExecuteNonQuery(); ไม่เช่นนั้นไม่มีเกิดผลอะไรกับ ข้อมูลในฐานข้อมูล เลย
Date : 2010-06-03 18:50:47 By : thaic
 


 

No. 7



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ทำไรอะ จะใช้ dataadapter insert ข้อมูลเหรอ หรือจะ query ข้อมูล เอาให้แน่

ใช้ dataadapter เพื่อ query ข้อมูล
DataSet Ds = new DataSet();

string strConn = "Data Source = .\\SqlExpress;Initial Catalog=datatest;Integrated Security=true";
SqlConnection Conn = new SqlConnection(strConn);

string strComm = "Select [ID], [Name] From [Friend] Where [Birthday]=@Birthday";
SqlCommand Comm = new SqlCommand(strComm, Conn);
Comm.AddWithValue("@Birthday", DateTime.ParseExact("3/6/2010", "d/M/yyyy", CultureInfo.InvariantCulture);

SqlDataAdapter dataAdapter = new SqlDataAdapter();
dataAdapter.SelectCommand = Comm;
dataAdapter.Fill(Ds, "Friend");

ใช้ dataadapter เพื่อ insert ข้อมูล
//สำคัญ DataSet ต้องมีข้อมูล
DataSet Ds = new DataSet();

DataTable Dt = new DataTable("Friend");
Dt.Columns.Add("ID", System.Type.GetType("System.Int32"));
Dt.Columns.Add("Name", System.Type.GetType("System.String"));
Dt.Columns.Add("Birthday", System.Type.GetType("System.DateTime"));

for (int i = 1; i < 10; i++)
{
    DataRow Dr = Dt.NewRow();
    Dr["ID"] = i;
    Dr["Name"] = string.Format("tungman{0}", i.ToString());
    Dr["Birthday"] = DateTime.Now;
    Dt.Rows.Add(Dr);
}

string strConn = "Data Source = .\\SqlExpress;Initial Catalog=datatest;Integrated Security=true";
SqlConnection Conn = new SqlConnection(strConn);

string strComm = "Insert Into [Friend] ([ID], [Name], [Birthday]) Values (@ID, @Name, @Birthday)";
SqlCommand Comm = new SqlCommand(strComm, Conn);
Comm.Parameters.Add("@ID", SqlDataType.Int, 4, "ID");
Comm.Parameters.Add("@Name", SqlDataType.NVarChar, 50, "Name");
Comm.Parameters.Add("@Birthday", SqlDataType.SmallDateTime, 4, "Birthday");

SqlDataAdapter dataAdapter = new SqlDataAdapter();
dataAdapter.InsertCommand = Comm;
dataAdapter.Update(Ds, "Friend");

Date : 2010-06-03 19:53:01 By : tungman
 


 

No. 8



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


insert ซิครับ query insert - -* คิวรี หมายถึงกระบวนการการกระทำ เพิ่ม ลบ อัพเดท เลือกดู ไม่ใช่เหรอ
Date : 2010-06-03 22:44:10 By : thaic
 


 

No. 9



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ขอโทษค่ะที่ตอบช้ามีธุระวุ่นวายไปหน่อย งานเข้าหลายอย่างพร้อมๆกันค่ะ
ครั้งแรกผิดเองที่ไม่ได้ดู ท่อนล่างมองแต่ SQL COMMAND กับ Sysntax แบบ Parameter
พอดูท่อนล่างก็เป็นอย่างที่คุณบอกค่ะ มีการ EXECUTE SQL สองครั้งจาก
DataAdapter ครั้งนึงแล้วก็ EXECUTENONQUERY
เพราะเป็นการ INSERT และมี PRIMARY KEY น่าจะเกิดปัญหาดังกล่าวค่ะ
ทางแก้สั้นๆ คือตัดบรรทัด ที่เกี่ยวกับ DataAdapter ออกให้หมด
ตามที่คนใช้งานจริงที่คุณไปสอบถามมาแล้วแนะนำค่ะ

ขอขยายผลเรื่องนี้นะคะ ทราบว่าคุณทำตามหนังสือตัวอย่างที่ให้มา
โดยจะการใช้ SQL STATEMENTกับ Method EXECUTENONQUERY
และ ชุด Object DataAdapter เพื่อจะ สร้าง Dataset หรือ DataTable ออกมา

วัตถุประสงค์ชอง 2 ชุดคำสั่งนี้แตกต่างกัน
โดยปกติ EXECUTENONQUERY เรามักจะใช้กับ SQL COMMAND พวก
DATA MANIPULATION STATEMENT : INSERT ,UPDATE ,DELETE
หรือ DATA DEFINITION STATEMENT ( CREATE, ALTER, DROP ETC. )
เพราะนิยามของ Method นี้มีสั้นๆ คือ จะทำการ Execute Sql statement
ของ Connection object ที่ติดต่ออยู่ โดยจะ return ค่ากลับมาเป็น Int
ซึ่งเป็นจำนวนของ แถวหรือจำนวน record ที่ได้รับผลกระทบจากการ
execute sql state ดังกล่าว

https://www.thaicreate.com/asp.net/asp.net-executenonquery.html
(Errata นิดนึง พี่วินค่ะมัน return total row effected number ค่ะ )

มาดูส่วน DataAdapter กัน
Object นี้จะเป็น object ที่เกี่ยวพันกับ Database provider เช่น
MSSQL Provider จะใช้ SqlDataAdapter
MySQL Provider จะใช้ MySqlDataAdapter
หน้าที่ของ object นี้คือ จัดเก็บชุด Command object
ที่เชื่อมต่อ database หรือ connection
เพื่อเอามา filled ใหักับ datatable หรือ dataset
เพื่อเอาผลที่ได้นั้นมาใช้ใน .Net framework อีกทีค่ะ
ยิ่งเขียนก้อยิ่งจะยาว นี่ก้อดึกละ ขอจบสะตรงนี้เลยนะคะ
Date : 2010-06-04 01:24:39 By : blurEyes
 


 

No. 10



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

เดียวดำเนินการแก้ไขก่อนครับ
Date : 2010-06-04 06:27:36 By : webmaster
 


 

No. 11



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


อ่านของ blueeyes แล้วเข้าใจแบบงงๆ เอ๊ะยังไง

ในความเข้าใจของผม ผมจะแบ่งการติดต่อฐานข้อมูลเป็น 2 ประเภท คือ

1. แบบ connection
จะต้อง เปิด / ปิด connection ก่อนจะ execute command โดย
select จะใช้ executereader
select scalar จะใช้ executescalar
insert update delete create drop จะใช้ executenonquery
ซึ่งโดยปกติ ผมจะใช้สำหรับ query scalar หรือ create drop table
หรือ update delete หรือ insert แบบ record เดียว

2. แบบ connectionless
วิธีนี้ไม่ต้อง เปิด / ปิด connection แต่ต้องใช้ dataadapter เป็นตัวกลาง
ติดต่อ ใช้งานประเภทไม่อยากรบกวน database server บ่อยๆ
คือ query ข้อมูลมาปู้ยี่ปู้ยำใน memory table (พวก dataset datatable)
เสร็จแล้วค่อย insert update delete กลับไปที่ฐานข้อมูลทีเดียว

ผิดถูกอย่างไรขออภัย พอดีเป็นศิษย์ไม่มีครู ศึกษาวิทยายุทธเอง บางทีธาตุไฟเข้าแทรกเหมือนกัน
Date : 2010-06-04 09:10:16 By : tungman
 


 

No. 12



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

น้องเค้าเก่งมากครับ
Date : 2010-06-04 09:45:06 By : webmaster
 


 

No. 13



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


อืม เก่งดิ ยกให้เลยคนนี้ ความรู้แบบนี้หาไม่ได้ในห้องเรียนนะเนี่ย

หรือว่าน้องเขามีปลั๊กแบบ นีโอ ณ แมตทรกซ์
Date : 2010-06-04 09:58:36 By : tungman
 


 

No. 14



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


แหง๋น่อ พราวอ่านไว้สอบนี่ ก้อประมาณนี้
ท่องเจื้อยแจ้วเป็นนกแก้วนกขุนทองไปเรื่อย
ไม่ใช่ความเข้าใจที่เกิดจากการปฏิบัติค่ะ
dataadater เป้นประมาณ buffer ที่เก็บ command object
เพื่อจะเอาไว้สร้าง datatable กะ dataset
เป็นข้อต่อของ database provider กับ .net framework
จริงๆมันมีโมเดลมาอธิบายนะคะ แต่คงไม่มีครัยอยากดูหรอก
ออกจะน่าเบื่อทฤษฎีเยอะค่ะ

ที่ไม่สรุปสั้นๆ ให้ เพราะดูเหมือนคุณคนนั้น
เพิ่งจะมาเขียน ยังต้องใช้หนังสิออ่านเปรียบเทียบ
ส่วนมากหนังสือภาษาไทยจะไม่มีส่วนที่เป็น นิยาม
กับทฤษฎีให้ เลยขยายส่วนนี้
ปกติที่เป้นปัญหาคือ เอา code มาใช้
และมักจะข้ามส่วนที่มาที่ไปมาจากไหนเพื่ออะไร
ทำให้บางคนจะติดๆขัดๆค่ะ

วันหลังจะทำส่วนบรรณานุกรมให้ว่าเอามาจากเล่มไหนค่ะ

อีกอย่าง BLUREYES ไม่ใช่ BLUEEYES ค่าา
Date : 2010-06-04 11:02:52 By : blurEyes
 


 

No. 15



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ตัว r เหรอ อิอิ โทษทีๆ
Date : 2010-06-04 11:22:32 By : ตังค์แมน
 


 

No. 16



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


โอ้ โห ความรู้ไหลมามากมาย เก็บเข้า สมองทันไหมเนี่ย ขอบคุณพี่ๆ มากครับ

แต่ พอเราจะตั้งเงื่อนไขตรวจสอบ ข้อมูลไม่ให้ซ้ำกันที่นี้เราต้องเอา จากตัวไหนไปตรวจสอบ หรือจะให้ มี ทั้งคำสั่ง insert และ select อยู่ใน private ด้วยกัน มาตรวจว่าซ้ำไหมแล้วค่อยเอาไป insert ตรงนี้นั่งคิดมา 2วันแล้ว คิดไม่ออก จริงๆ แนะนำตัวอย่างให้ดูหน่อย ครับท่านพี่
Date : 2010-06-04 13:36:25 By : thaic
 


 

No. 17



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ไม่เก่งอะไรหรอกค่า
พี่ๆเพื่อนๆที่ทราบเรื่องนี้ ที่ชำนาญเรื่องนี้น่าจะมีหลายคน
เพียงแต่ว่าจะมีเวลามาตอบให้หรือเปล่าเท่านั้นเอง
ตอนนี้มหาลัยเริ่มเปิด เอกชน - รัฐ ก็เริ่มทำงานตามปกติแล้ว
น่าจะเริ่มๆยุ่งกันทีละคนๆแลัวมังคะ

วิธีเลี่ยงปัญหา primary key โดยปกติจะไปกำหนดให้ field
ที่ใช้เป็น pk ให้ เพิ่มค่าอัตโนมัติค่ะ (auto increasement)
ส่วนเวลา insert ก็ข้าม field นี้เลย
database engine จะสร้างขึ้นมาให้เองค่ะ
เช่น #table1 มี field( A ,B ,C ) มี A เป็น PK แบบ auto increasement
INSERT STATEMENT จะเป็น

INSERT [#table1] (B, C) VALUES ( VALUE_B ,VALUE_C ) ค่ะ

ส่วนวิธีกำหนด ตามรูปด้านล่างเลยค่ะ
identity

แต่ที่ใช้กันตอนนี้จะ generate id มาใช้เองค่ะ
ซึ่งวิธีทั้งสองแบบมีข้อดีข้อเสียแตกต่างกันค่ะ
ถ้าเป็นการฝึกปฎิบัติแนะนำให้ใช้วิธีแรกค่ะ
Date : 2010-06-04 18:03:20 By : blurEyes
 


 

No. 18



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

เช็คซ้ำก่อน insert ครับ

Code (C#)
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.SqlClient"%>
<%@ Page Language="C#" Debug="true" %>
<script runat="server">
        SqlConnection objConn = new SqlConnection();
		SqlCommand objCmd = new SqlCommand();
		String strConnString,strSQL;

    void Page_Load(object sender,EventArgs e)
	{
		strConnString = "Server=localhost;UID=sa;PASSWORD=;database=mydatabase;Max Pool Size=400;Connect Timeout=600;";
		objConn.ConnectionString = strConnString;
		objConn.Open();
    }
    
    void btnSave_Click(Object sender , EventArgs e)        
	{ 
			int intNumRows;
			strSQL = "SELECT COUNT(*) FROM customer WHERE CustomerID = '"+ this.txtCustomerID.Text +"' ";
			objCmd = new SqlCommand(strSQL, objConn);
			intNumRows = Convert.ToInt32(objCmd.ExecuteScalar());

			if(intNumRows > 0)
			{
				this.pnlAdd.Visible = false;
				this.lblStatus.Visible = true;
				this.lblStatus.Text = "CustomerID already exists.";
			}
			else
			{
				strSQL = "INSERT INTO customer (CustomerID,Name,Email,CountryCode,Budget,Used) " +
				" VALUES " +
				" ('" + this.txtCustomerID.Text + "','" + this.txtName.Text + "','" + this.txtEmail.Text + "', " +
				" '" + this.txtCountryCode.Text + "','" + this.txtBudget.Text + "','" + this.txtUsed.Text + "')";

				objCmd = new SqlCommand();
				objCmd.Connection = objConn;
				objCmd.CommandText = strSQL;
				objCmd.CommandType = CommandType.Text;
								
				this.pnlAdd.Visible = false;

				try
				{
					objCmd.ExecuteNonQuery();
					this.lblStatus.Text = "Record Inserted";
					this.lblStatus.Visible = true;
				}
				catch (Exception ex)
				{
					this.lblStatus.Visible = true;
					this.lblStatus.Text = "Record can not insert Error ("+ ex.Message +")";
				}
		}
    }

	void Page_UnLoad()
	{
		objConn.Close();
		objConn = null;
	}

</script>
<html>
<head>
    <title>ThaiCreate.Com ASP.NET - SQL Server</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Panel id="pnlAdd" runat="server">
            <table width="353" border="1">
                <tbody>
                    <tr>
                        <td width="102">
                            &nbsp;<asp:Label id="lblCustomerID" runat="server" text="CustomerID"></asp:Label></td>
                        <td width="235">
                            &nbsp;<asp:TextBox id="txtCustomerID" runat="server" Width="79px"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            &nbsp;<asp:Label id="lblName" runat="server" text="Name"></asp:Label></td>
                        <td>
                            &nbsp;<asp:TextBox id="txtName" runat="server" Width="177px"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            &nbsp;<asp:Label id="lblEmail" runat="server" text="Email"></asp:Label></td>
                        <td>
                            &nbsp;<asp:TextBox id="txtEmail" runat="server" Width="155px"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            &nbsp;<asp:Label id="lblCountryCode" runat="server" text="CountryCode"></asp:Label></td>
                        <td>
                            &nbsp;<asp:TextBox id="txtCountryCode" runat="server" Width="38px"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            &nbsp;<asp:Label id="lblBudget" runat="server" text="Budget"></asp:Label></td>
                        <td>
                            &nbsp;<asp:TextBox id="txtBudget" runat="server" Width="76px"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            &nbsp;<asp:Label id="lblUsed" runat="server" text="Used"></asp:Label></td>
                        <td>
                            &nbsp;<asp:TextBox id="txtUsed" runat="server" Width="76px"></asp:TextBox>
                        </td>
                    </tr>
                </tbody>
            </table>
            <br />
            <asp:Button id="btnSave" onclick="btnSave_Click" runat="server" Text="Save"></asp:Button>
            <br />
        </asp:Panel>
        <asp:Label id="lblStatus" runat="server" visible="False"></asp:Label>
    </form>
</body>
</html>

Date : 2010-06-04 18:07:12 By : webmaster
 


 

No. 19



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณทุกท่านครับเดี๋ยวลองดูครับ แบบว่านี้คือ โปรเจ็คที่จะส่งในเดือนนี้เลยต้องรีบกันหน่อย เรียนมาได้เท่านี้แหละ อ. เขาสอนเราแค่นี้นอกนั้นต้องศึกษาเอง ไม่อยากพูดเลยว่าเรียนเอากระดาษแผ่นเดียว มาศึกษาในอินเทอร์เน็ต ยังได้เยอะกว่าอีก
Date : 2010-06-04 19:36:51 By : thaic
 


 

No. 20



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


เรียนระดับนี้แล้วเขาไม่สอนกันหรอก เขาให้ศึกษาเอง สอนนิดๆ หน่อยๆ นั่นน่ะใจดีแล้ว

สมัยฉันปีหนึ่ง เรียนโปรแกรมเบื้องต้นด้วย turbo c อาจารย์สอนพื้นๆ ปกติๆ แต่งานแกให้

ทำเกม คิดดูแล้วกันให้ทำเกมด้วย turbo c oop ก็ไม่ได้เรียน memory 64k ของ dos

ให้ทำเกม นรกชัดๆ
Date : 2010-06-04 23:22:00 By : tungman
 


 

No. 21



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


นรกชัดเจนมาก
Date : 2010-06-04 23:50:05 By : thaic
 


 

No. 22



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


เออ คือ ว่าทำตรวจไม่ให้ซ้ำกันได้แล้วทีนี้ เราจะตรวจยังไงให้ ชื่อ-นามสกุล ไม่ให้ซ้ำกันทั้ง 2อย่างใน บรรทัดเดียวกัน

...กะว่าจะไม่นอนถ้าทำไม่ได้แต่มันง่วงจัดคิดไม่ออก ตัวเปรียบเทียบมันน้อยไปน่ะผมว่า ! && || ^ != == <= >= >= <= < > อยากเยอะกว่านี้อ่ะ....ข้ออ้างคนโง่ T_T

^^ ช่วยเอาตัวอย่างการตรวจสอบ ชื่อและนามสกุล ซ้ำให้ดูด้วยครับ ท่าน ขอบคุณครับ
Date : 2010-06-05 01:17:31 By : thaic
 


 

No. 23



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


cute-header-04x
Code (C#)
System.Text.StringBuilder cmdBuilder = new System.Text.StringBuilder();

cmdBuilder.AppendLine("DECLARE @TOTAL_REC AS INT ;") ;

cmdBuilder.AppendLine("SELECT @TOTAL_REC = COUNT(IDSICK) ") ;
cmdBuilder.AppendLine("FROM datapeople ") ;
cmdBuilder.AppendLine("WHERE (FIRSTNAME=@add2) AND (LASTNAME=@add3); ") ;
cmdBuilder.AppendLine("IF (@TOTAL_REC = 0) ") ; // UNIQUE NAME CHECKED PASS
cmdBuilder.AppendLine("BEGIN ") ;
cmdBuilder.AppendLine("   INSERT datapeople ") ;
cmdBuilder.AppendLine("      ( IDpeople, firsname, lastname, address, mou, street " ) ;
cmdBuilder.AppendLine("        ,tambom, aumpuer, province, Birthday, age, sex ) " ) ;
cmdBuilder.AppendLine("   VALUES ") ;
cmdBuilder.AppendLine("      ( @add1, @add2, @add3, @add4, @add5, @add6, @add7 ") ;
cmdBuilder.AppendLine("        ,@add8, @add9, @add10, @add11, @add12 ) ;" ) ;
cmdBuilder.AppendLine("END ") ;

string sret = cmdBuilder.ToString() ;


เอาไปแทนของเดิมนะคะ

Code (C#)
string  sret = "insert into datapeople(IDsick,IDpeople,firsname,lastname,address,mou"
   + "   ,street,tambom,aumpuer,province,Birthday,age,sex)"
   + "values(@add00,@add1,@add2,@add3,@add4,@add5,@add6,@add7"
   + "   ,@add8,@add9,@add10,@add11,@add12)";


แล้วให้ไป SET identity specification ตามรูปข้างบน
ที่ ExecuteNoneQuery หาตัวแปรไปรับ ถ้าค่าเป็น 0 คือไม่มีการ insert เพื่อจะได้ display message ต่อไป
เป็น trick อีกอย่างคือการ execute sql statement มากกว่า 1 statement ด้วย ExecuteNoneQuery ค่ะ
Date : 2010-06-05 09:13:04 By : blurEyes
 


 

No. 24



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


Code (C#)
cmdBuilder.AppendLine("WHERE (FIRSTNAME=@add2) AND (LASTNAME=@add3); ") ;


SET identity specification >> ทำแล้วครับสะดวกมาก

มันก็แค่ดูว่า ทั้ง2 อันนี้มีในตารางหรือเปล่า ผมอยากให้มัน แบบว่า มีนามสกุลอยู่ในตารางแล้ว แต่ชื่อไม่ซ้ำสามารถ insert ได้แล้วก็ ชื่อซ้ำได้แต่นามสกุล ห้ามซ้ำ กับคนที่มีชื่อและนามสกุล นี้แล้ว พอจะทำตัวอย่างให้ดูได้ไหมครับ
Date : 2010-06-05 10:05:49 By : thaic
 


 

No. 25



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


^ ^ น่าจะถูกแล้วนะคะ นี่คือการตรวจสอบว่า ถ้ามีข้อมูลที่ซ้ำทั้งชื่อ และ ซ้ำนามสกุล จะมีค่ามากกว่า 0
ซึ่งจะไม่มีการ insert ค่ะ ถ้าอย่างใดอย่างหนึ่งซ้ำ แต่ไม่ทั้งสอง จะมีค่าเป็น 0 ค่ะ
Date : 2010-06-05 10:13:05 By : blurEyes
 


 

No. 26



โพสกระทู้ ( 66 )
บทความ ( 0 )



สถานะออฟไลน์


อ๋อ ที่จริงผมทำได้แล้วล่ะแต่ ผมไม่เข้าใจตรงงนี้เอง พอเอา Code คุณStupid gal ไปดัดแปลงผลก็ออกมาน่าชื่นใจ ขอบคุณมากครับ

ตรงนี้ที่ผมพลาดไป

COUNT(IDSICK) ตอนแรก ใส่ *
WHERE (FIRSTNAME=@add2) AND (LASTNAME=@add3); ตรงนี้อีก ผมลืมไปว่ามันสามารถตรวจสอบโดย ภาษา SQL ได้ ผมนั่งงมกับ C# ตรวจสอบอยู่นั้นแหละ








Code (C#)
private void button9_Click(object sender, EventArgs e)
        {
            //เพิ่มข้อมูลในฐานข้อมูล

            string strSQL, strSQL2, strConn = "Data Source = .\\SqlExpress;Initial Catalog=datatest;Integrated Security=true";
            Conn = new SqlConnection();
            if (Conn.State == ConnectionState.Open)
            {
                MessageBox.Show("ผิดพลาดมีปัญหาในการเชื่อมต่อฐานข้อมูล", "ระบบผิดพลาด");
            }
            // MessageBox.Show("ข้อมูลซ้ำกับ ข้อมูลในฐานข้อมูล", "ผิดพลาด");
            Conn.ConnectionString = strConn;
            Conn.Open();
            DataSet dat = new DataSet();
            SqlCommand cmd;
            SqlDataAdapter ad;
            int intNumRows, intNumRows2;
            //bool booA = false,booB = true;
            strSQL = "SELECT COUNT(IDSICK) FROM datapeople WHERE IDpeople = '" + maskedTextBox5.Text + "' ";
            strSQL2 = "SELECT COUNT(IDSICK) FROM datapeople WHERE (firsname = '" + textBox9.Text + "')AND (lastname = '" + textBox19.Text + "') ";
            //strSQL3 = "SELECT COUNT(IDSICK) FROM datapeople WHERE lastname = '" + textBox19.Text + "' ";
            cmd = new SqlCommand(strSQL, Conn);
            cmd = new SqlCommand(strSQL2, Conn);
            //cmd = new SqlCommand(strSQL3, Conn);
            intNumRows = Convert.ToInt32(cmd.ExecuteScalar());
            intNumRows2 = Convert.ToInt32(cmd.ExecuteScalar());
            //intNumRows3 = Convert.ToInt32(cmd.ExecuteScalar());

            if (intNumRows > 0)
            {

                MessageBox.Show("ข้อมูลซ้ำ", "ผิดพลาด");
                Conn.Close();
            }
            else if (intNumRows2 == 0 )
            {


                string sret = "insert into datapeople(IDpeople,firsname,lastname,address,mou,street,tambom,aumpuer,province,Birthday,age,sex)" +
                "values(@add1,@add2,@add3,@add4,@add5,@add6,@add7,@add8,@add9,@add10,@add11,@add12)";
                cmd = new SqlCommand(sret, Conn);
                //cmd.Parameters.AddWithValue("add00", textBox18.Text);
                cmd.Parameters.AddWithValue("add1", maskedTextBox5.Text);
                cmd.Parameters.AddWithValue("add2", textBox9.Text);
                cmd.Parameters.AddWithValue("add3", textBox19.Text);
                cmd.Parameters.AddWithValue("add4", textBox10.Text);
                cmd.Parameters.AddWithValue("add5", textBox11.Text);
                cmd.Parameters.AddWithValue("add6", textBox12.Text);
                cmd.Parameters.AddWithValue("add7", textBox13.Text);
                cmd.Parameters.AddWithValue("add8", textBox14.Text);
                cmd.Parameters.AddWithValue("add9", textBox15.Text);
                cmd.Parameters.AddWithValue("add10", maskedTextBox6.Text);
                cmd.Parameters.AddWithValue("add11", textBox17.Text);
                if (radioButton13.Checked == true)
                {
                    cmd.Parameters.AddWithValue("add12", "Male");
                }
                else if (radioButton14.Checked == true)
                {
                    cmd.Parameters.AddWithValue("add12", "Female");
                }
                else
                {
                    MessageBox.Show("โปรดกลับไปเลือกเพศ");
                    Conn.Close();
                }
                ad = new SqlDataAdapter(cmd);
                ad.Fill(dat, "TTL");
                MessageBox.Show("สำเร็จ");
                Conn.Close();
            }
            else
            {
                MessageBox.Show("ผิพลาดอย่างแรงงงงงๆๆ");
            }

        }

Date : 2010-06-05 10:50:30 By : thaic
 


 

No. 27

Guest


ผมอยากช่วยอธิบายหน่อยครับว่าตอนแรกเราต้องทำยังไงกับการเชื่อมต่อฐานข้อมูลอะครับ
Date : 2010-11-14 13:34:05 By : jiraphan
 


 

No. 28



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

แนะนำให้อ่านในบทความ C# ก่อนน่ะครับ

Go to : C# Tutorial : ภาษา C# Sharp เขียน C# บทเรียน C# เรียน C# สอน C# ในประเทศไทย
Date : 2010-11-15 20:35:03 By : webmaster
 


 

No. 29

Guest


ขอบคุณค่ะ โค้ดพี่ช่วยเค้าได้เยอะเรย
Date : 2013-01-06 23:49:40 By : โบ
 


 

No. 30



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


มัน เออเร่อ เพราะอะไรครับช่วยดูให้หน่อยครับ
code
Date : 2017-11-13 19:39:31 By : nam
 


 

No. 31



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


แก้ไขเปลี่ยนเอาเป็น text มาครับ รูปภาพแสดงก็ไม่ครบ ก๊อปปี้ก็ไม่ได้

แต่เออเร่อร์ก็บอกว่า sql statement มีปัญหา ก็เช็คให้ดีว่ามันผิดยังไง
ตัวแปรมาครบหรือไม่ และมันควรจะ debug โปรแกรมได้
ถ้า debug ไม่เป็น ก็ alert sql statement ออกมาเช็คด้วยตาเปล่า
หรือเอาไป รันใน phpmyadmin จะได้รู้ว่า ผิดตรงไหน
Date : 2017-11-13 20:56:02 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : C# Error เมื่อใช้ ExecuteNonQuery...Violation of PRIMARY KEY constraint 'PK_Masterdata'. Cannot insert duplicate key in object 'dbo.datapeople'
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่