Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Chuỗi kết nối C# với Sql 2005

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    1

    Smile Chuỗi kết nối C# với Sql 2005

    Nhiều bạn mới nghiên cứu C# sẽ mắc phải vấn đề này
    Search trên nhiều diễn đàn nhưng chạy toàn thấy lỗi
    Có thể nhiều bạn thừa biết điều này nhưng mình vẫn muốn đóng góp cho những bạn chưa biết
    Đây là chuỗi kết nối cho bản Express với tài khoản sa:
    Visual C# Code:
    1. SqlConnection con;
    2. con = new SqlConnection("Server = namesever ; Database = namedata; Uid =sa ;Pwd= pass;");
    3. con.Open();
    4.  
    5. namesever = ten\\SQLEXPRESS
    6. namedata = ten database
    7. uid = sa;
    8. Pwd = password của bạn

    chỉ đơn giản thế thôi bạn à . nó khác sql2k mà


    Lưu ý: Bỏ code vào tagcode
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 23-11-2008 lúc 12:55 PM.

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Nếu muốn tham khảo toàn bộ chuổi kết nối thì vào đây.
    http://www.connectionstrings.com/
    mấy cái này zkday chẳng bao giờ nhớ cả khi nào quên thì vào đó để xem hoặc dùng một số cách khác để lấy (ví như giả kết nối bằng control rồi lấy chuổi, xong thì nghỉ chơi )

  3. #3
    Ngày gia nhập
    06 2008
    Bài viết
    9

    Chào các bạn.
    Chẳng hạn bây giờ mình muốn thực hiện kết nối tới 1 csdl có sẵn, đã lưu trên PC Pocket rồi (cụ thể là ở thư mục gốc ổ C: C:\temp.sdf), thì làm sao để tạo chuỗi kết nối cho hoàn chỉnh.
    Lớp MyDatabase của mình cấu trúc như sau:
    Code:
    public class MyDatabase {
    		#region Properties
    		private SqlCeConnection conn = null;
            	private SqlCeEngine engine;
    		private string _databaseName;
    		/// <summary>String that contains the Database Name being used by this application</summary>
    		public string DatabaseName {
    			get {return _databaseName;}
    			set {_databaseName = value;}
    		}
    		private string _pathToDatabase;
    		/// <summary>String that contains the path to the Database being used by this application</summary>
    		public string PathToDatabase {
    			get {return _pathToDatabase;}
    			set {_pathToDatabase = value;}
    		}
    		#endregion
    		
    		public MyDatabase() {			
    		}
    
    		public MyDatabase(string sPath, string sDatabaseName){
    			_pathToDatabase = sPath;
    			_databaseName = sDatabaseName;
    		}
    ................
              private void GetConnected(){
    			conn = new SqlCeConnection("Data Source = " + _pathToDatabase + _databaseName);
    		}
    }
    Khi load Form lên, ta gọi 1 obj kiểu MyDatabase, tham chiếu kết nối đến csdl temp.sdf có sẵn:
    Code:
    MyDatabase db = new MyDatabase("C:\\","temp.sdf");
    Nhưng khi debug, VS2005 toàn báo lỗi là đường dẫn ko hợp lệ.
    Vây bây giờ phải tạo chuỗi kết nối như thế nào. Mình muốn cấu trúc chuỗi kết nối gọn nhẹ vậy thôi, ko dùng đến server j` cả (vì chạy trên PC Pocket nên mình chỉ muốn sử dụng các assembly framework sẵn có trong .NET Compact Framework thôi).
    Mong nhận đc góp ý của các bạn.

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    UIT
    Bài viết
    44

    Trích dẫn Nguyên bản được gửi bởi napoleonit76 Xem bài viết
    Nhưng khi debug, VS2005 toàn báo lỗi là đường dẫn ko hợp lệ.
    Vây bây giờ phải tạo chuỗi kết nối như thế nào. Mình muốn cấu trúc chuỗi kết nối gọn nhẹ vậy thôi, ko dùng đến server j` cả (vì chạy trên PC Pocket nên mình chỉ muốn sử dụng các assembly framework sẵn có trong .NET Compact Framework thôi).
    Mong nhận đc góp ý của các bạn.
    Việc này còn phụ thuộc vào bạn đang chạy trên phiên bản SQL nào bạn ạh !
    Đây là một ví dụ kết nối trong SQL2005 bản Enter..

    PHP Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    using Microsoft.WindowsCE.Forms// For SystemSettings
    using System.Data.SqlServerCe// For Database
    using System.IO// For File IO

    namespace DataCentricApp2
    {
        public 
    partial class Form1 Form
        
    {
            private 
    SqlCeConnection conn;
            private 
    SqlCeCommand cmd;
            private 
    SqlCeResultSet rs;

            public 
    Form1()
            {
                
    InitializeComponent();

                
    // Display the OK button for closing the application.
                
    MinimizeBox false;

                
    // Init ScreenOrientation to Angle90 (standard landscape view)
                
    SystemSettings.ScreenOrientation ScreenOrientation.Angle90;

                
    // Init Database
                
    CreateDatabase();

                
    // Init Display
                
    InitDisplay();
            }

            ~
    Form1()
            { 
                
    // The SqlCeResultSet requires the connection to be open to perform 
                // various functions so close only when the form goes away
                
    conn.Close();

                
    // Reset the ScreenOrientation to default Angle0 (standard portrait view)
                // so emulator or device isn't left in a landscape mode
                
    SystemSettings.ScreenOrientation ScreenOrientation.Angle90;
            }

            
    // Create the SQL Mobile 2005 Database with 2 tables
            // Contact - Master Table
            // Address - Detail Table
            
    private void CreateDatabase()
            {
                try
                {
                    
    // Delete the SQL Mobile 2005 Database file
                    
    File.Delete(@"\My Documents\Personal\Contacts.sdf");

                    
    // Create a new database
                    
    SqlCeEngine engine = new SqlCeEngine(@"Data Source = \My Documents\Personal\Contacts.sdf");
                    
    engine.CreateDatabase();

                    
    // Create and open connection.  The SqlCeResultSet requires the 
                    // connection to be open to perform various functions
                    
    conn = new SqlCeConnection(@"Data Source = \My Documents\Personal\Contacts.sdf");
                    
    conn.Open();

                    
    // Create Command
                    
    cmd conn.CreateCommand();

                    
    // Create Address Detail Table and insert rows
                    
    cmd.CommandText "CREATE TABLE Address (AddressID INT, Address1 NVARCHAR(30), City NVARCHAR(30), State NVARCHAR(2), Zip NVARCHAR(5))";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Address VALUES (1,'332 3rd Ave','Pasco','WA', '99301')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Address VALUES (3,'Ad112 A ST','Pasco','WA', '99301')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Address VALUES (2,'141 Oak PKWY','Pasco','WA', '99301')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Address VALUES (4,'332 N 40TH SE','Richland','WA','99352')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Address VALUES (5,'3329 Belfair','Burbank','WA','99331')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Address VALUES (6,'PO Box 332','Pasco','WA','99302')";
                    
    cmd.ExecuteNonQuery();

                    
    // Create Contact Master Table and insert rows
                    
    cmd.CommandText "CREATE TABLE Contact (ContactID INT, AddressID INT, First NVARCHAR(20), Last NVARCHAR(30), Phone NVARCHAR(20))";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Contact VALUES (1, 1, 'Andy', 'Smith', '443-4343')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Contact VALUES (2, 1, 'Joan', 'Smith', '443-4344')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Contact VALUES (3, 2, 'Bob', 'Johnson', '333-4788')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Contact VALUES (4, 3, 'Willy', 'Williams', '443-0087')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Contact VALUES (5, 4, 'Jenny', 'Cowpoke', '443-7773')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Contact VALUES (6, 4, 'Jim', 'Cowpoke', '443-7773')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Contact VALUES (7, 5, 'Kate', 'Jones', '444-4338')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Contact VALUES (8, 6, 'Bill', 'Schultz', '440-2233')";
                    
    cmd.ExecuteNonQuery();
                    
    cmd.CommandText "INSERT INTO Contact VALUES (9, 6, 'Belinda', 'Schultz', '440-4568')";
                    
    cmd.ExecuteNonQuery();
                }
                catch (
    Exception ex)
                {
                    
    MessageBox.Show("Error: " ex.Message);
                }
            }

            
    // Select all the contacts from the contact table for display in the ListBox
            
    private void InitDisplay()
            {
                
    // Create ResultSet
                
    cmd.CommandText "SELECT AddressID, First, Last, Phone, First + ' ' + Last AS Name FROM Contact";
                
    rs cmd.ExecuteResultSet(ResultSetOptions.Updatable ResultSetOptions.Scrollable);
                
    MasterListBox.DataSource rs.ResultSetView;
                
    MasterListBox.DisplayMember "Name"// What is displayed
                
    MasterListBox.ValueMember "AddressID";
            }

            
    // When the contact is selected in the ListBox, update the detail view based
            // on the Foreign key AddressID 
            
    private void MasterListBox_SelectedValueChanged(object senderEventArgs e)
            {
                
    // Sync list box with result set...in this case number of records in result set
                // is the same as the number of rows in the ListBox
                
    rs.ReadAbsolute(MasterListBox.SelectedIndex);

                
    // Set the First, Last and Phone based on result set
                
    FirstTextBox.Text rs.GetString(1);
                
    LastTextBox.Text rs.GetString(2);
                
    PhoneTextBox.Text rs.GetString(3);

                
    // Set up the Detail values using a DataReader and Foreign key AddressID in the select query
                
    cmd.CommandText "SELECT * FROM Address WHERE AddressID = " rs.GetInt32(0).ToString(); // Get the Detail Table Foreign Key, AddressID
                
    SqlCeDataReader dr null;
                try
                {
                    
    dr cmd.ExecuteReader();
                    if (
    dr.Read())
                    {
                        
    AddressTextBox.Text = (string)dr["Address1"];
                        
    CityTextBox.Text = (string)dr["City"];
                        
    StateTextBox.Text = (string)dr["State"];
                        
    ZipTextBox.Text = (string)dr["Zip"];
                    }
                }
                catch (
    Exception ex)
                {
                    
    MessageBox.Show("Error: " ex.Message);
                }
                
    finally
                
    {
                    if (
    dr != null)
                        
    dr.Close();
                }
            }
        }


  5. #5
    Ngày gia nhập
    06 2008
    Bài viết
    9

    Àh ko, ý tớ là làm sao để kết nối thẳng tới 1 csdl đã có sẵn, và đã đc located trên Pocket. Ví dụ như theo cấu trúc của lớp MyDatabase đó, thì có 2 tham số wan trọng là _pathToDatabase và _nameDatabase. Vấn đề là khai báo chuỗi kết nối string connection như thế nào để wăng vào SqlCeConnection thì nó mới nhận ra. Tham khảo trên mạng đc cái này hay hay:
    How to specify the location of the SDF file
    Often times the .SDF database is not running in the current directory so it becomes necessary to programatically set the path to the SDF file. This is an example (.net C#) on how to do this when the SDF file is located in the same directory as the executing application.
    Code:
    Data Source=" + (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\MyData.sdf;Persist Security Info=False;
    Ref: http://www.connectionstrings.com/sql-server-2005-ce
    Nhưng tới khi debug, thì văng ra 1 exception là ko tìm thấy file .sdf, mặc dù đã để nó cùng thư mục với file thực thi ứng dụng (how to do this when the SDF file is located in the same directory as the executing application).
    Tớ đang dùng SQL Server 2005 Compact Edition
    PS: Àh, nhìn nick name như vậy, chắc vtien_uit là dân ĐHCNTT fải ko nhỉ?!

  6. #6
    Ngày gia nhập
    06 2007
    Bài viết
    206

    Mặc định Chuỗi kết nối C# với Sql 2005

    cho mình hỏi, cái này hình như bạn viết phần mềm trên ppc hả, sao thấy các đối tượng là lạ có thêm ...CE...

    nếu đúng vậy thì mình viết phần mềm xong đóng gói là cài và chạy đc trên ppc hả bạn!
    Thà để chửi dốt 1 lần, còn hơn ngu cả đời.

  7. #7
    Ngày gia nhập
    12 2008
    Bài viết
    4

    Cái đó hình như viết trên Mobile đó bạn.

  8. #8
    Ngày gia nhập
    08 2009
    Nơi ở
    C:\Documents and Settings\ME\My Documents\Visual Studio 2010
    Bài viết
    516

    Trích dẫn Nguyên bản được gửi bởi napoleonit76 Xem bài viết
    Chào các bạn.
    Chẳng hạn bây giờ mình muốn thực hiện kết nối tới 1 csdl có sẵn, đã lưu trên PC Pocket rồi (cụ thể là ở thư mục gốc ổ C: C:\temp.sdf), thì làm sao để tạo chuỗi kết nối cho hoàn chỉnh.
    Lớp MyDatabase của mình cấu trúc như sau:
    Code:
    public class MyDatabase {
    		#region Properties
    		private SqlCeConnection conn = null;
            	private SqlCeEngine engine;
    		private string _databaseName;
    		/// <summary>String that contains the Database Name being used by this application</summary>
    		public string DatabaseName {
    			get {return _databaseName;}
    			set {_databaseName = value;}
    		}
    		private string _pathToDatabase;
    		/// <summary>String that contains the path to the Database being used by this application</summary>
    		public string PathToDatabase {
    			get {return _pathToDatabase;}
    			set {_pathToDatabase = value;}
    		}
    		#endregion
    		
    		public MyDatabase() {			
    		}
    
    		public MyDatabase(string sPath, string sDatabaseName){
    			_pathToDatabase = sPath;
    			_databaseName = sDatabaseName;
    		}
    ................
              private void GetConnected(){
    			conn = new SqlCeConnection("Data Source = " + _pathToDatabase + _databaseName);
    		}
    }
    Khi load Form lên, ta gọi 1 obj kiểu MyDatabase, tham chiếu kết nối đến csdl temp.sdf có sẵn:
    Code:
    MyDatabase db = new MyDatabase("C:\\","temp.sdf");
    Nhưng khi debug, VS2005 toàn báo lỗi là đường dẫn ko hợp lệ.
    Vây bây giờ phải tạo chuỗi kết nối như thế nào. Mình muốn cấu trúc chuỗi kết nối gọn nhẹ vậy thôi, ko dùng đến server j` cả (vì chạy trên PC Pocket nên mình chỉ muốn sử dụng các assembly framework sẵn có trong .NET Compact Framework thôi).
    Mong nhận đc góp ý của các bạn.
    Cái này thì phải dùng AttachDbFilename mới được, cho dù dữ liệu của bạn đã được located ở bất cứ đâu.

Các đề tài tương tự

  1. tại sao không thể kết nối sql 2005 với visual studio 2005 được
    Gửi bởi thuan trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 15-11-2011, 09:46 PM
  2. Sự kiện click chuột vào EditBox trong MFC 2005??
    Gửi bởi nam_dkn trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 19-03-2011, 12:34 AM
  3. Giup Em Ve Phan Sua Chua SQL Sever 2005 Voi ....
    Gửi bởi Black Cat trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 16
    Bài viết cuối: 28-09-2009, 04:12 PM
  4. Update SP1 cho VS 2005 | Nâng Visual studio 2005 lên SP1
    Gửi bởi mushu trong diễn đàn Công cụ, ebooks VC++
    Trả lời: 4
    Bài viết cuối: 13-04-2009, 06:01 PM
  5. Insert Image in SQl 2005 dùng VB.net 2005
    Gửi bởi nthung trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 7
    Bài viết cuối: 12-05-2008, 05:21 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn