มีวิธีที่ทำให้กด button แล้วอัพเดทคิวรี่เบสหลัก ที่อิงคิวรี่จากอีกเบสไหมครับ
ประมาณนี้ครับ
Code (C#)
string strConn1 = " อะไรก็ว่ากันไป";
string strConn2 = " อะไรก็ว่ากันไ";
using (System.Data.SqlClient.SqlConnection cnn1 = new System.Data.SqlClient.SqlConnection(strConn1))
{
cnn1.Open();
using (System.Data.SqlClient.SqlCommand cmd1= new System.Data.SqlClient.SqlCommand())
{
cmd1.Connection = cnn1;
cmd1.CommandText = "UPDATE ....";
cmd1.ExecuteNonQuery();
}
}
using (System.Data.SqlClient.SqlConnection cnn2 = new System.Data.SqlClient.SqlConnection(strConn2))
{
cnn2.Open();
using (System.Data.SqlClient.SqlCommand cmd2 = new System.Data.SqlClient.SqlCommand())
{
cmd2.Connection = cnn2;
cmd2.CommandText = "UPDATE ....";
cmd2.ExecuteNonQuery();
}
}
แล้วหากยังจะเกิดคำถามอีกว่า ถ้าผมมี 10 database ละครับผมจะไม่เขียนโค้ดเป็นหากอึ่งกันเลยรึ
ก็เขียนเป็นฟังค์ชันให้มันครับ
Code (C#)
void CommandExecuteNonQuery(string strConn,string sql)
{
using (System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection(strConn))
{
cnn.Open();
using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand())
{
cmd.Connection = cnn;
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
}
}
void Test()
{
CommandExecuteNonQuery(strconndatabase1,strUpdate);
CommandExecuteNonQuery(strconndatabase1,strInsert);
CommandExecuteNonQuery(strconndatabase1,strDelete);
CommandExecuteNonQuery(strconndatabase2,strUpdate);
CommandExecuteNonQuery(strconndatabase2,strInsert);
CommandExecuteNonQuery(strconndatabase2,strDelete);
CommandExecuteNonQuery(strconndatabase3,strUpdate);
CommandExecuteNonQuery(strconndatabase3,strInsert);
CommandExecuteNonQuery(strconndatabase3,strDelete);
//แบบนี้มีเป็ย 100 ก็มาเลย
}
นอกจากมันจะใช้กับ sql update ตามที่เราอยากได้แล้วมันก็ใช้กับ Insert / delete ได้ด้วยเลย
ยังไม่จบครับ
เพราะในงานจริงๆเราไม่รู้ user ที่จะเอาโค้ดเราไปใช้งาน อาจจะอยากได้ความหลากหลาย
งั้นให้ รับค่าได้ทั้ง Connectionstring ไปทำเป็น SqlConnection และยังสามารถรับ SqlConnection โดยตรงได้อีก
เช่น
Code (C#)
void CommandExecuteNonQuery(string strConn,string sql)
{
using (System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection(strConn))
{
cnn.Open();
CommandExecuteNonQuery(cnn ,sql);
}
}
void CommandExecuteNonQuery(System.Data.SqlClient.SqlConnection cnn ,string sql)
{
if (cnn.State == ConnectionState.Closed) cnn.Open();
//มาแบบนี้เราต้องเช็ค State ก่อนว่าปิดอยู่รึป่าว ถ้าปิดก็ Open มันซะ
using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand())
{
cmd.Connection = cnn;
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
}
void Test()
{
CommandExecuteNonQuery(strconndatabase1,strUpdate);
System.Data.SqlClient.SqlConnection connect = new System.Data.SqlClient.SqlConnection(strConn);
CommandExecuteNonQuery(connect ,strInsert);
}
เก็บโค้ดใน class สามารถ ใช้ static class และ static public void เราจะได้ไม่ต้องประกาศมันเพื่อเรียกมาใช้ แต่จะใช้ได้เลย ครับ
Date :
2017-12-15 16:20:23
By :
lamaka.tor
database 2 ก่อนอยู่บน Server เดียวกันไหมครับ
ถ้าอยู่บน server เดียวกัน
ก็ใช้ connection ตัวเดียวได้เลย
สามารถใช้ code แบบเดิมได้เลย
แต่ตรงชื่อ table ให้เพิ่มชื่อ database เข้าไปด้วย
เช่น จากเดิมเรียก Table_A
ก็เปลี่ยนเป็น DatabaseName.dbo.Table_A
หรือย่อหน่อยก็ DatabaseName..Table_A
แต่ถ้าอยู่คนล่ะ Server ก็ไปทำ Link Server
เวลาเรียกใช้งานก็เพิ่มชื่อ Server เข้าไปด้วย
เช่น จากเดิมเรียก Table_A
ก็เปลี่ยนเป็น ServerName.DatabaseName.dbo.Table_A
ถ้าเป็นแบบมีชื่อ Server จะใช้แบบย่อไม่ได้น่ะครับ
Date :
2017-12-19 14:12:17
By :
fonfire
Load balance : Server 02