Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Konekcija SQL Serevera 2005 i C#

[es] :: .NET :: .NET Desktop razvoj :: Konekcija SQL Serevera 2005 i C#

[ Pregleda: 2678 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gooxy
Metafizika

Član broj: 92105
Poruke: 40
*.ptt.yu.



Profil

icon Konekcija SQL Serevera 2005 i C#11.04.2008. u 00:06 - pre 195 meseci
Pomoć tražim!

Ne mogu naći razjašnjenja i rešenja za problem. Doduše, to više nije onaj problem koji je bio pre dva dana ali ima nešto što ne mogu da razjasnim a i živci su mi pri kraju pa tražim pomoć od nekog voljnog sa znanjem.
Problem se sastoju u povezivanju Visual C# i SQL Servera, oba 2005 i oba Express Edition. Pročitao sam za ova dva, tri dana gomile tekstova sa neta i MSDN, ali nisam uspeo da se snađem. Da se nisam pre dva meseca gotovo bez problema u Java aplikaciji konektovao na MySQL bazu i sasvim lepo, kao po loju, radio sa bazom, unosom i iznosom podataka, mislio bi da nešto nije u redu samnom:-). Ne bi se ni bakćao sa ovim Majkrosoftovim sr...m da mi nije potrebno za neki projekat na faksu za koji insistiraju da bude u C# i .NET-u što je za mene nova teritorija.
Dakle, connectionStrig, sastavni delovi i čemu šta služi. Ja sam ovaj prvi kod napisao kao konzolnu aplikaciju samo da bi napravio bazu podataka. I pravi je, što sam proverio preko SQL Server Managament Studio Express-a. Ovo "Data Source=.\\SQLEXPRESS; Integrated Security='SSPI';" pišem gotovo kao slepac. SSPI? Šta ovo Data Source treba da predstavlja? URL servera ili ...



using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace Bazni
{
class Program
{
static void Main(string[] args)
{
using (SqlConnection konekcija =
new SqlConnection("Data Source=.\\SQLEXPRESS;" +
"Integrated Security='SSPI';"))
{

string str = "CREATE DATABASE Bazapod;";



SqlCommand komanda = new SqlCommand(str, konekcija);

konekcija.Open();
komanda.ExecuteNonQuery();

Console.WriteLine("A be, da be");



}
}
}
}



E onda sam, normalno hteo da napravim prostu tabelu, sa dve kolone, probe radi, i tu sam sa živcima otišao :-). Probao sam sve kombinacije za konekcioni string ali ne uspeva. Normalno, kad ne razumem baš najbolje šta čemu služi.



using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace Bazni
{
class Program
{
static void Main(string[] args)
{
using (SqlConnection konekcija =
new SqlConnection("Data Source=.\\SQLEXPRESS; AttachDbFileName=|DataDirectory|\\Data\\Bazapod.mdf" +
"iIntegrated security=true; database=Bazapod"))
{

string str = "CREATE TABLE tabla (ime varchar(10), int broj);";



SqlCommand komanda = new SqlCommand(str, konekcija);

konekcija.Open();
komanda.ExecuteNonQuery();

Console.WriteLine("A be, da be");



}
}
}
}



I javio mi je sledeće



Unhandled Exception: System.Data.SqlClient.SqlException: Login failed for user '
'. The user is not associated with a trusted SQL Server connection.
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception
, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObj
ect stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cm
dHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, Tds
ParserStateObject stateObj)
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlis
tOK)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnecti
on owningObject, SqlConnectionString connectionOptions, String newPassword, Bool
ean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdent
ity identity, SqlConnectionString connectionOptions, Object providerInfo, String
newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOp
tions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection
owningConnection)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConn
ection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owning
Object)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection o
wningObject)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection ownin
gObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection ow
ningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection ou
terConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at Bazni.Program.Main(String[] args) in C:\Documents and Settings\Gurke\My Do
cuments\Visual Studio 2005\Projects\Bazni\Bazni\Program.cs:line 24
Press any key to continue . . .


Ima li mi pomoći?

I šta posle spajanja? Kontam da treba da napravim DataSet koji će u potpunosti da odgovara mojoj bazi i da onda napravim TableAdapter preko koga ću da ažuriram bazu?

Ovo sam namerno napisao kao konzolnu aplikaciju da bi shvatio gde je šta i šta čemu služi. Ja razumem da Majkrosoft pokušava da olakša programiranje ali mi zasad (pošto ne razumem baš najbolje šta i kako) njihove opcije drag&drop idu na nerve jer kad prevučem nešto i pustim ono kao da eksplodira a delovi su u mnogobrojnim fajlovima :-)

Unapred hvala.

P.S. Kako da formatiram kod u editoru u Visual Studio 2005 Express Edition?
So much the better, we shall fight in the shade!
 
Odgovor na temu

prog
Bihac

Član broj: 106882
Poruke: 77
*.806591-86.bih.net.ba.



Profil

icon Re: Konekcija SQL Serevera 2005 i C#11.04.2008. u 08:04 - pre 195 meseci
Porpilicno si dobro uradio za pocetnika. Ako si formirao bazu podataka na SQL serveru sa nazivom Bazapod, onda je ona već atačirana na server tako da je connection string u drugom programu netačan. trebao bi pisati sljedeće:

using (SqlConnection konekcija =
new SqlConnection("Data Source=.\\SQLEXPRESS; Initial Catalog=Bazapod;iIntegrated security=true;"))
{
......
}


Ostalo bi trebalo biti OK.
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
85.94.122.*

Sajt: www.azalea-maritime.com


Profil

icon Re: Konekcija SQL Serevera 2005 i C#12.04.2008. u 10:27 - pre 195 meseci
U connectionString-u parametar "Data Source" predstavlja lokaciju SQL Servera u vidu naziva hosta, IP adrese ili naziva domena. Tacka predstavlja localhost. Ono sto se nalazi iza back-slash karaktera (\SQLEXPRESS) - predstavlja instancu SQL Servera (s' obzirom da se na jedan racunar moze instalirati do 50 instanci nezavisnih SQL servera, u zavinosti od verzije).

SSPI predstavlja "trusted connection" iliti - "Windows NT autentifikaciju" (dakle - Windows vrši provjeru korisničkog imena i lozinke), a umjesto SSPI konteksta - postoji i SQL server autentifikacija - gdje se na server eksplicitno vrši konekcija sa određenim korisničkim imenom i lozinkom (prethodno definisanim unutar SQL servera).

Više informacija sa primjerima na: http://www.connectionstrings.com/?carrier=sqlserver2005
 
Odgovor na temu

mhirsl
Beograd

Član broj: 127340
Poruke: 11
*.eunet.yu.



Profil

icon Re: Konekcija SQL Serevera 2005 i C#12.04.2008. u 17:19 - pre 195 meseci
OK....ja imam problem druge vrste...nakon istalacije Viste i Sql Server 2005 Express-a i VS 2005 moja aplikacija nece da radi kao sto je to cinila prethodno na XP-u...uradio sam ista podesavanja koja sam imao i na XP-u i sa VS 2005 i sa Sql Serverom...

Malo sam guglao i uradio sve sto sam nasao...dakle omogucio remote connections, postavio TCP port...bukvalno sve sam uradio ali meni i dalje aplikacija ne radi...izbacuje mi sledecu gresku...

Code:
System.Data.SqlClient.SqlException: An error has occurred while establishing a connection to the server.  
When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings 
SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)


Jos interesantnija stvar je da kada ubacim objekat SqlDataSource i preko njega pokusam da uspostavim konekciju uspevam u tome...i one upite za testiranje lepo vraca...ali kada pokrenem aplikaciju vraca gore navedenu gresku...

Da napomenem...instalirao sam i SP2 za Sql Server 2005...

Ima li neko ideju sta da radim?
Break Down the Wall
 
Odgovor na temu

gooxy
Metafizika

Član broj: 92105
Poruke: 40
*.ptt.yu.



Profil

icon Re: Konekcija SQL Serevera 2005 i C#12.04.2008. u 18:35 - pre 195 meseci
Evo mene opet. Uspešno sam se konektovao na SQL Server mada mi još nisu baš najjasnije opciju U SqlConnection objektu. Sada imam malo drugačiji problem. Naredni kod ne funcioniše, mada bi po svim saznanjima trebao da radi. Nije mi jasno u čemu je greška. Baza podataka ima jednu tabelu "tabla" sa dve kolone "ime" i "broj". Kad posmatram promenljive i objekte u dibageru sve funkcioniše normalno do Update metode. DataSet prihvata promenu ali to ne ide u bazu. Jedino što meni pada napamet je da, pošto koristim Exprexss ediciju i SQL servera i Visual Studia 2005, možda postoji neko ograničenje.



Kod:
======================

using System;
using System.Data;
using System.Data.SqlClient;

class Class1
{
static void Main(string[] args)
{
SqlConnection thisConnection = new SqlConnection("Data Source =.\\SQLEXPRESS;database=Bazapod;Integrated Security=SSPI");
SqlDataAdapter thisAdapter = new SqlDataAdapter("SELECT ime, broj FROM tabla", thisConnection);

SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter);

DataSet thisDataSet = new DataSet();

thisAdapter.Fill(thisDataSet, "tabla");

Console.WriteLine("name before change: {0}", thisDataSet.Tables["tabla"].Rows[5]["ime"]);

thisDataSet.Tables["tabla"].Rows[1]["ime"] = "Inc";

thisAdapter.Update(thisDataSet, "tabla");

Console.WriteLine("name after change: {0}", thisDataSet.Tables["tabla"].Rows[5]["ime"]);


}
}




Rezultat na konzoli:
=========================

name before change: nata

Unhandled Exception: System.InvalidOperationException: Dynamic SQL generation for the Updat
eCommand is not supported against a SelectCommand that does not return any key column infor
mation.
at System.Data.Common.DbDataAdapter.UpdatingRowStatusErrors(RowUpdatingEventArgs rowUpda
tedEvent, DataRow dataRow)
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMap
ping)
at System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMa
pping tableMapping)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
at Class1.Main(String[] args) in C:\Documents and Settings\Gurke\My Documents\Visual Stu
dio 2005\Projects\Bazna3\Bazna3\Program.cs:line 22
Press any key to continue . . .

So much the better, we shall fight in the shade!
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
85.94.122.*

Sajt: www.azalea-maritime.com


Profil

icon Re: Konekcija SQL Serevera 2005 i C#12.04.2008. u 19:50 - pre 195 meseci
Dakle - imaš dva propusta:

1. U tabeli nisi definisao primarni ključ, ili si ga kreirao ali ga nisi uključio u SQL upit. SQLDataAdapter mora imati jednu kolonu koja je primarni ključ, na osnovu koje će vršiti Update nad odgovarajućim redom.
2. Mijenjaš detalj iz reda pod indeksom 5, a prikazuješ podatak prije i poslije izmjene iz reda pod indeksom 1. Da nemaš problem sa primarnim ključem - primjer bi ti u svakom slučaju pokazao isti podatak prije i poslije update-a.
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
85.94.122.*

Sajt: www.azalea-maritime.com


Profil

icon Re: Konekcija SQL Serevera 2005 i C#12.04.2008. u 19:52 - pre 195 meseci
Zaboravih da dodam - ako radiš sa SqlDataAdapterom - ne moraš definisati objekat konekcije, već SqlDataAdapteru pridružiti string konekcije kao string. On će voditi računa o kreiranju i otvaranju odgovarajućeg objekta konekcije, kao i zatvaranju istog.
 
Odgovor na temu

mhirsl
Beograd

Član broj: 127340
Poruke: 11
*.eunet.yu.



Profil

icon Re: Konekcija SQL Serevera 2005 i C#19.04.2008. u 18:16 - pre 194 meseci
Imam desktop aplikaciju u C# i Sql 2005 bazu koja se nalazi na web serveru koji nije u istom domenu sa mojom aplikacijom...i imam problema prilikom povezivanja sa bazom...probao sam sa IP adresom i portom koji koristi Sql ali mi ne uspeva...da li cu morati da koristim soket programiranje da bih se povezao ili nesto drugo...sta da stavim u konekcioni string da bi sve radilo kako treba?
Break Down the Wall
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
85.94.122.*

Sajt: www.azalea-maritime.com


Profil

icon Re: Konekcija SQL Serevera 2005 i C#19.04.2008. u 21:11 - pre 194 meseci
Citat:
mhirsl: Imam desktop aplikaciju u C# i Sql 2005 bazu koja se nalazi na web serveru koji nije u istom domenu sa mojom aplikacijom...i imam problema prilikom povezivanja sa bazom...probao sam sa IP adresom i portom koji koristi Sql ali mi ne uspeva...da li cu morati da koristim soket programiranje da bih se povezao ili nesto drugo...sta da stavim u konekcioni string da bi sve radilo kako treba?


Uz pretpostavku da je SQL server propisno konfigurisan (omogućava remote TCP/IP konekcije, omogućava SQL Server autentifikaciju, ima propisno kreirano korisničko ime i lozinku sa odgovarajućim pravima), na njega ćeš se povezati korišćenjem stringa nalik sljedećem:

Code:

Data Source=nazivdomena;Initial Catalog=NazivBaze;Integrated Security=False;Uid=username;Pwd=password;


gdje:

Data Source - predstavlja naziv servera na koji se povezuješ: hostname, IP adresa, naziv domena, hostname\instanca
Initial Catalog - predstavlja naziv inicijalne baze sa kojom će korisnik ostvariti konekciju
Integrated Security - umjesto NT autentifikacije (true) koristimo SQL Server autentifikaciju (gdje treba proslijediti korisničko ime i password)
Uid - korisničko ime (definisano u SQL Serveru)
Pwd - password (definisan u SQL Serveru)

Predlažem da pogledaš temu (jednu od tema koje se bave connection string-ovima): http://www.elitesecurity.org/t...o-konekcije-VB-NET-SQL-Servera na kojoj ćeš pronaći instrukciju o kreiranju jednostavnog VBScript-a koji možeš koristiti za testiranje i formiranje connection string-a.

Da se ne rasplinjavamo - tamo ću zakačiti i jedan tutorial, s' obzirom da se na toj temi više govori o connection string-ovima.
 
Odgovor na temu

mhirsl
Beograd

Član broj: 127340
Poruke: 11
*.eunet.yu.



Profil

icon Re: Konekcija SQL Serevera 2005 i C#20.04.2008. u 00:13 - pre 194 meseci
Da li ovo znaci da ce u Data Source da ide sve ovo sto si naveo...znaci hostname, ip, domen i instanca? I to tim redom?
Break Down the Wall
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
85.94.122.*

Sajt: www.azalea-maritime.com


Profil

icon Re: Konekcija SQL Serevera 2005 i C#20.04.2008. u 06:43 - pre 194 meseci
Ne. Data Source je jedan od parametara koji se u string-u konekcije odvajaju tacka-zarezom. Raspored nije vazan.
 
Odgovor na temu

gooxy
Metafizika

Član broj: 92105
Poruke: 40
*.ptt.yu.



Profil

icon Re: Konekcija SQL Servera 2005 i C#22.04.2008. u 20:46 - pre 194 meseci
Postavicu ovde svoje pitanje mada nije bas u ovoj temi ali nije ni daleko. U SQL Serveru 2005 Express sam napravio bazu "opstina" sa samo jednom tabelom "tabela" koja se sastoji iz nekoliko kolona (cisto porbe radi). Uz pomoc vizuelnih alata Visual Studio 2005 Express Edition-a sam dodao DataSource ali bez povezivanja iliti Binidingovanja:-) sa aplikacijom. jednostavno sam zeleo da na osnovu unetog broja ocitam podatke iz odredjenog sloga(vrste) tabele. Ono sto mi ovde nije jasno je da linija:

opstinaDataSet.tabelaRow ro = (opstinaDataSet.tabelaRow)ds.tabela.Rows[Convert.ToInt32(textBox6.Text)];

nece da funkcionise ako ne castujem levu stranu u opstina.DataSet.tabelaRow? Nije ni jesno zasto to nece da radi kad sam ja "ds" definisao uz pomoc opstinaDataSet tipa koji je Studio sam generisao. Dakle, zasto kad napisem
ds.tabela.Rows[#nesto#] to nije isto kao da sam napisao opstinaDataset.opstinaRow? Zar to ne bi trebalo da bude isti tip?


================
opstinaDataSetTableAdapters.tabelaTableAdapter adapter = new opstinaDataSetTableAdapters.tabelaTableAdapter();
opstinaDataSet.tabelaDataTable tab = adapter.GetData();
opstinaDataSet ds = new opstinaDataSet();


adapter.Fill(ds.tabela);

//opstinaDataSet.tabelaRow ro = tab[Convert.ToInt32(textBox6.Text)];
//opstinaDataSet.tabelaRow ro = ds.Tables["tabela"].Rows[4];

opstinaDataSet.tabelaRow ro = (opstinaDataSet.tabelaRow)ds.tabela.Rows[Convert.ToInt32(textBox6.Text)];

textBox1.Text = ro[0].ToString();
textBox2.Text = ro[1].ToString();
textBox3.Text = ro[2].ToString();
textBox4.Text = ro[3].ToString();
textBox5.Text = ro[4].ToString();

}
So much the better, we shall fight in the shade!
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Konekcija SQL Serevera 2005 i C#

[ Pregleda: 2678 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.