PDA

View Full Version : Ko kết nối dc CSDL trong C# và SQL



SUPER KUNG FU
02-03-2009, 20:57
Tạo 1 form có 1 nút Fill. Khi click nút này thì sẽ đổ dữ liệu trong CSDL tên là Northwind lên DataGridView.Mình viết sự kiện cho nút FILL thế này mà ko hiểu sao chương trình ko chạy dc.Các bạn sửa giùm mình với. Cám ơn lắm lắm.


string ConnectionString = "Data Source = SUPERCOMPUTER" +
"Integrated Security=SSPI" +
"Initial Catalog=NorthwindDataSet";

SqlConnection connect = new SqlConnection();
connect.ConnectionString = ConnectionString;
string strSql = "SELECT CustomerID,ContactName,ContactTitle
FROM Customers";
SqlDataAdapter dad = new SqlDataAdapter(strSql, connect);
DataSet dat = new DataSet("Customers");
dad.Fill(dat,"Customers");
customersTableAdapter.Fill(northwindDataSet.Custom ers);

dq_ninh
03-03-2009, 02:14
Bạn viết lập trình cẩu thả quá. Bạn nên viết như dưới đây:

using (SqlConnection dbConnection = new SqlConnection(this.ConnectionString))
{
try
{
this.CheckConnectionPool();
dbConnection.Open();

using (SqlDataAdapter dbAdapter = new SqlDataAdapter(szQueryName, dbConnection))
{
dbAdapter.SelectCommand.CommandType = QueryType;
if (lstParams != null)
{
IEnumerator<SqlParameter> eParm = lstParams.GetEnumerator();
while (eParm.MoveNext())
{
dbAdapter.SelectCommand.Parameters.Add(eParm.Curre nt);
}
}

dbAdapter.Fill(dbDataSet);
}
}
catch (SqlException SqlError)
{
if (dbConnection.State == ConnectionState.Open)
{
dbConnection.Close();
}

dbDataSet.Dispose(); ;
dbDataSet = null;
if (this.Parent != null && this.Parent is IDBManager)
{
((IDBManager)this.Parent).IMsgBox(SqlError);
}
else
{
throw SqlError;
}
}


Nhưng tóm tắt lại, có lẽ (phải, có lẽ thôi, vì có thể còn chỗ hư hỏng khác) không thể kết nối được, vì cái "connection" của bạn chưa bao giờ "open" hết (nhìn highlight ở dưới).




Tạo 1 form có 1 nút Fill. Khi click nút này thì sẽ đổ dữ liệu trong CSDL tên là Northwind lên DataGridView.Mình viết sự kiện cho nút FILL thế này mà ko hiểu sao chương trình ko chạy dc.Các bạn sửa giùm mình với. Cám ơn lắm lắm.


string ConnectionString = "Data Source = SUPERCOMPUTER" +
"Integrated Security=SSPI" +
"Initial Catalog=NorthwindDataSet";

SqlConnection connect = new SqlConnection();
connect.ConnectionString = ConnectionString;

connect.Open()
string strSql = "SELECT CustomerID,ContactName,ContactTitle
FROM Customers";
SqlDataAdapter dad = new SqlDataAdapter(strSql, connect);
DataSet dat = new DataSet("Customers");
dad.Fill(dat,"Customers");
customersTableAdapter.Fill(northwindDataSet.Custom ers);

shinobiBT
03-03-2009, 02:41
hix, Việt Nam mình nhiều người lập trình còn qua loa quá, bên Mỹ này người ta lập trình phải tính toán hết, coi perfomance được chưa, có lỗ hổng nào không, rồi code có readable không, 1 cái code nhiều khi ngồi dăm ba ngày để test đi test lại. Bạn Super Kungfu nên để ý lại 1 chút.

serivn
03-03-2009, 05:24
string ConnectionString = "Data Source = SUPERCOMPUTER" +
"Integrated Security=SSPI" +
"Initial Catalog=NorthwindDataSet";


Chào bạn nhé!! Mình chưa có đọc hết xong mình thấy bạnh sai ở chỗ này luôn nè. Bạn nhớ trong chuỗi kết nối, mỗi thuộc tính phải cách nhau bởi dấu ';' nhé, và nhớ cho cả User và Pass nữa nhé! Mình sửa lại nè, còn mình chưa có đọc kĩ xuống dưới:



string ConnectionString =
"Data Source = SUPERCOMPUTER;" +
"User ID= YourUserSQLServer;Pwd=YourPass; +
"Integrated Security=SSPI;" +
"Initial Catalog=Northwind";

//Bạn chú ý nhé, mình đang kết nối tới CSDL trên SQL Server thì
//nên kiểm tra kĩ xem tên của nó là gì nhé.

//Một điều nữa là bạn phải Open() nó trước khi thực hiện các Command


Phần còn lại bạn tự tìm hiểu thêm nhé.
Chúc bạn thành công!!:)



hix, Việt Nam mình nhiều người lập trình còn qua loa quá, bên Mỹ này người ta lập trình phải tính toán hết, coi perfomance được chưa, có lỗ hổng nào không, rồi code có readable không, 1 cái code nhiều khi ngồi dăm ba ngày để test đi test lại. Bạn Super Kungfu nên để ý lại 1 chút.


Mình nghĩ là bạn ấy mới tập mà, sao bạn nói cả Việt Nam vậy? Chỉ là kết nối xem có thành công không rồi mới đi tối ưu chứ. Mới làm thử thì sao đã hoàn thiện được đúng ko các bạn! Xong có sự tìm tòi thì chắc chắn sẽ dẫn tới thành công!!

SUPER KUNG FU
03-03-2009, 17:27
Cám ơn nhé.Mình làm dc rồi

dq_ninh
04-03-2009, 02:11
Cũng không nên nói như vậy đâu. Vì lập trình ở Việt Nam trong giai đoạn này vẫn còn phôi thai. Có một vài công ty ở Mỹ đến Việt Nam, nhưng chỉ là những công ty nhỏ, chi nhánh, đem qua Việt Nam những lập trình thuộc loại "legacy" đã lỗi thời.

Hơn thế nữa, đa số các thày dạy lập trình ở Việt Nam cũng còn thuộc về giới "thầy phôi thai", nên làm sao có thể có những học trò "lão luyện" được?

Biết như thế, cho nên nhà nước đã có những chương trình thu hút chất xám. Nhưng có lẽ, luật nhà cửa, luật song tịch phải dễ dãi hơn nhiều mới có thể thu hút được.

Đừng nói tới ngành CNTT. Ngay như ngành kiến trúc, là một ngành đã có lâu đời, các công ty kiến trúc, xây dựng ở Việt Nam làm công trình thấy...mà ghê. Muốn biết thấy mà..."ghê" cỡ nào ư? Hãy vào Google Map, ngao du qua Mã Lai (cũng là một nước nhược tiểu, nghèo), để thấy kế hoạch đô thị của người ta: Nhà không sát vách, đường lớn phía trước, đường đổ rác phía sau.

Còn Việt Nam mình? Cũng đô thị mới! Cũng kế hoạch mới! Nhưng cũng hỡi ơi mới luôn: Nhà 5 mét bề ngang. Chỉ có mặt đường. Ba bề kín bưng. Và rác rưởi cũng sẽ tiếp tục tuôn ra mặt đường trên ĐÔ THỊ MỚI. Đến nỗi tờ Tuổi Trẻ Cười phải trào phúng rằng: "Có một đất nước nhỏ, có những ông quan to. Quan to có đầu óc nhỏ. Đầu óc nhỏ nhưng có dự án thật to..." mà tôi nghĩ đã có nhiều bạn đã đọc.

Mã lai và Việt Nam khác nhau ở chỗ nào? Những người bạn Mã lai của tôi ở Hoa Kỳ, nếu họ muốn về Mã lai để ở dăm ba năm, để mua nhà, họ có thể về ngay ngày mai.

Còn tôi? Từ nhỏ tôi chỉ mơ được làm một thày giáo làng, gõ đầu dăm đứa trẻ lớp 5, lớp 7. Bây giờ, tôi muốn về Việt Nam để thỏa giấc mơ đó, nhưng tôi lại không về được, vì nhà nước chỉ cho tôi 2 tháng Visa. Muốn về ở vài năm hoặc ở luôn ư? Tôi phải đối mặt với hàng chục, hàng trăm những luật lệ nhiêu khê. Và khi đạt được tiêu chuẩn cho những luật lệ nhiêu khê đó, tôi, có lẽ còn phải đối mặt với những nhiêu khê cấp xã, cấp phường khác. Phép vua còn thua lệ làng, đúng không?






hix, Việt Nam mình nhiều người lập trình còn qua loa quá, bên Mỹ này người ta lập trình phải tính toán hết, coi perfomance được chưa, có lỗ hổng nào không, rồi code có readable không, 1 cái code nhiều khi ngồi dăm ba ngày để test đi test lại. Bạn Super Kungfu nên để ý lại 1 chút.

shinobiBT
04-03-2009, 03:13
Uhm, mình cũng muốn về VN làm việc nhưng lại sợ tình trạng sỡ hữu bản quyền của VN mình còn chưa chặt chẽ. Việt Nam mình vẫn chưa ý thức nhiều lắm về bản quyền, cứ copy của người khác xong rồi lại đề tên mình, thế là xong!!

Vẫn biết VN mình còn trong tình trạng mới bắt đầu, nhưng thiết nghĩ, mới bắt đầu thì nên tạo nền tảng vững chắc, lập trình code cũng vậy, không phải mình nói nhiều người VN mình viết code ẩu là không có căn cứ, là vơ đũa cả nắm. VD như đoạn code ở trên, học ASP.NET là đã biết nguyên lý là phải tạo 1 SQLConnection object, Open connection with DB bằng cách pass ConnectionString, sau đó fill DataSet bằng 1 DataAdapter là sẽ kết nối thành công, như vậy thì mình phải quan tâm đến các vấn đề khác như là Exception, Performance, Security nữa. Như vậy mới gọi là thấu đáo trong việc lập trình chứ.