ODBC Probleme mit MS SQL Express Server

xloom

Grünschnabel
Hallo zusammen,

ich bin absolut neuling in Sachen C#, und versuche mich in C# einzuarbeiten.....

Ich möchte seit ein paar Tagen über die ODBC eine Verbindung zu MS SQL Express Server aufzubauen. Leider funktioniert das ganze aus irgend ein Grund nicht so recht.

Ich kann mit dem Selben Code (unten) auf MySQL-Datenbank ohne Probleme zugreifen, allerdings klappt es mit der MS SQL-Server nicht.

Ich bin langsam mit meinem Latein am Ende, ich wäre sehr dankbar wenn jemand mir sagen kann, was ich zu beachten habe oder was/wo ich was falsch mache, wenn es geht Anfänger gerecht mit Coder Besipiel.



Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
using System.Data.Odbc;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {

        public DataTable dt = new DataTable("Daten");
        private BindingSource bindingSource1 = new BindingSource();
        private SqlDataAdapter dataAdapter = new SqlDataAdapter();

        public Form1()
        {
            InitializeComponent();            

            dt.Columns.Add(new DataColumn("ID"));
            dt.Columns.Add(new DataColumn("Name"));
            dt.Columns.Add(new DataColumn("Vorname"));
            
            //String conStr = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;PORT=3306;DATABASE=test;UID=root;PASSWORD=;charset=utf8;OPTION=3;";
            String conStr = "DRIVER={SQL Server};SERVER=localhost;PORT=1433;DATABASE=db;Trusted_Connection=yes;";

            OdbcConnection con = new OdbcConnection(conStr);
            dataGridView1.DataSource = bindingSource1;
            //OdbcCommand com = new OdbcCommand("SELECT * FROM user", con);
            OdbcCommand com = new OdbcCommand("select * from [db].[dbo].[user]", con);
            OdbcDataReader reader = null;

            object obj = null;

            try
            {
                com.Connection.Open();
                obj = com.ExecuteScalar();
                reader = com.ExecuteReader();
                while (reader.Read())
                {
                    Console.WriteLine(reader["uid"]);
                    Console.WriteLine(reader["name"]);
                    Console.WriteLine(reader["vorname"]);
                    
                    AddNewRow(dt, reader["uid"].ToString(), reader["name"].ToString(), reader["vorname"].ToString());
                }

                dataGridView1.DataSource = dt;
                dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
                con.Close();
            }
            catch (Exception eee)
            {
                MessageBox.Show(eee.StackTrace.ToString());
            }
        }

        private void AddNewRow(DataTable dt, string uid, string name, string vorname)
        {           
            DataRow dr = dt.NewRow();
            dr[0] = uid; 
            dr[1] = name; 
            dr[2] = vorname; 
            dt.Rows.Add(dr);
        }
    }
}
 
Zuletzt bearbeitet:
Hi

Erstmal herzlich willkommen im Forum! :)

Ich hab 2 Gegenfragen:
1. Wie äußert sich das "funktioniert nicht"? Gibt es Fehlermeldungen,...?
2. Wieso nutzt du nicht den entsprechenden Adapter für den SQL Server, der könnte das Problem umgehen. (also SqlClientConnection, SqlClientCommand,...).
Damit würdest du eine Schnittstelle nutzen, welche genau für den SQL Server gemacht ist und müsstest dich nicht mit den Problemen und Eigenheiten von ODBC rumschlagen.
 
Ausserdem muss beim SQL Server 2005 Express immer der Instanzname mit angegeben werden, sonst wird das nichts mit der Verbindung:
Code:
localhost\SQLEXPRESS
 
Hallo Norbert,

vielen Dank für den Tip, es funktioniert.


Für alle anderen die das gleiche Problem haben

Code:
String conStr = "DRIVER={SQL Server};SERVER=localhost\\SQLEXPRESS;PORT=1433;DATABASE=db;Trusted_Connection=yes;";



Ich hätte noch eine kleine Frage bezüglich SQL-String, und zwar muss man bei MS DQL Abfragen die Tabellennamen in eckigen Klammen schreiben, aber wie sieht es denn mit mit Spalten aus?


MySQL :
Code:
OdbcCommand com = new OdbcCommand("SELECT * FROM user", con);
oder
OdbcCommand com = new OdbcCommand("select uid,name from user", con);

MSSQL :
Code:
// funktioniert
OdbcCommand com = new OdbcCommand("select * from [user]", con);

// funktioniert nicht
OdbcCommand com = new OdbcCommand("select uid,name from [user]", con);

Muss man evtl. irgendwo etwas einstellen

Danke
 

Neue Beiträge

Zurück