Solved

Connect to a MSSQL database

Posted on 2006-11-06
14
249 Views
Last Modified: 2010-04-05
I'm a novis in database connections.

My problem is that I have a MSSql (Microsoft SQL) database I need connection to. How too get connected too the database that is on a server.
Is it ADO that is best suited for the task or is it somthing else? And it is an other database with the same name on the server witch is accessed with ODBC so I have too be certen it is not that one I get connetcted on.

And i'm not using .net.

I'm using Borland Developer Studio 2006 by the way.

0
Comment
Question by:liljen_80
  • 7
  • 7
14 Comments
 
LVL 21

Expert Comment

by:ziolko
ID: 17881051
yup, ADO is the fastest way, moreover both ADO and MSSQL are Microsoft's technologies so they wor very nice together:)

ziolko.
0
 

Author Comment

by:liljen_80
ID: 17881163
Oki, that was what I tought. But I dont get in anny conflicts with the other database witch my be accessed by ODBC?
I have been locking for a site on the internet with some explenation on how too use ADO but I cant find anny good one, someone knows anny site?
0
 
LVL 21

Expert Comment

by:ziolko
ID: 17881266
nope there shouldn't be any conflicts with ODBC
for samples of ADO go to: \Program Files\Borland\BDS\4.0\Demos\DelphiWin32\VCLWin32\ADO

ziolko.
0
 

Author Comment

by:liljen_80
ID: 17889215
Yea it was an example there, but it was very complex.
Does sombody have a simple solution on how and get a list of the tabels and how too conect a ADOTable to a database.

0
 
LVL 21

Accepted Solution

by:
ziolko earned 50 total points
ID: 17890322
drop down TADOConnection set connection string to your server and then:
 ADOConnection1.Open('your user name', 'your pass')
 ADOConnection1.GetTableNames();

here's little example:

object Form1: TForm1
  Left = 326
  Top = 88
  Caption = 'Form1'
  ClientHeight = 606
  ClientWidth = 862
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 76
    Top = 436
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object DBGrid1: TDBGrid
    Left = 248
    Top = 212
    Width = 489
    Height = 301
    DataSource = DataSource1
    TabOrder = 1
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'Tahoma'
    TitleFont.Style = []
  end
  object ADOConnection1: TADOConnection
    Connected = True
    ConnectionString =
      'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initi' +
      'al Catalog=sdb;Data Source=LUKASZZ\SQL2K'
    Provider = 'SQLOLEDB.1'
    Left = 84
    Top = 196
  end
  object ADOTable1: TADOTable
    Active = True
    Connection = ADOConnection1
    CursorType = ctStatic
    TableName = 'dat0001'
    Left = 84
    Top = 236
  end
  object DataSource1: TDataSource
    DataSet = ADOTable1
    Left = 172
    Top = 240
  end
end

ziolko.
0
 
LVL 21

Expert Comment

by:ziolko
ID: 17890335
You have to modify ConnectionString and TableName to your values

ziolko.
0
 

Author Comment

by:liljen_80
ID: 17896385
But how is it possible too make a list of the TableNames where the user my pick witch Table too show?
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 21

Expert Comment

by:ziolko
ID: 17896905
use ADOCOnnection.GetTableNames() display result for user when user selects table asign it's name to ADOTable.TableName and then set ADOTable.Active := True

ziolko.
0
 

Author Comment

by:liljen_80
ID: 17896937
I solved the last problem my self.

But I got a problem when I'm going into the database fore the first time. I get up that I have too write in the password and username. But it does not mather what i write, I get into the database no mater what I write.

This is the ConnectionString: Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=HET;Data Source=OLE\BERE
0
 
LVL 21

Expert Comment

by:ziolko
ID: 17897888
thats because You selected "Use Windows NT Integrated Security"  and therfore in connection to DB security context of logged on user (logged on to computer) is used instead of login/password You specify.

You can either set ADOCOnnection.LoginPrompt := False to use logged on user or remove >>Integrated Security=SSPI;<< from Your connection string (same as uncheck "Use Windows NT Integrated Security")

ziolko.
0
 

Author Comment

by:liljen_80
ID: 17905287
It worked with ADOCOnnection.LoginPrompt := False, thanks.

This is how I alter a table:
if ADOTable1.Locate('ID',45,[loCaseInsensitive]) then
begin
  ADOTable1.Edit;
  ADOTable1.FieldByName('ID').AsInteger := 65;
  ADOTable1.Refresh;
end;

But how too do this so that nobody other get access to alter this while I'm doing the change. Besause if it is done the way my code is it is generated an error, but I need it so that the last one dont get too do the altering and just continues.
0
 

Author Comment

by:liljen_80
ID: 17905296
The error message is:
Row can not bi located for updating. Some values may been changed since it was last read.
0
 
LVL 21

Expert Comment

by:ziolko
ID: 17905548
try ADOTable1.Post instead ADOTable1.Refresh;

ziolko.
0
 

Author Comment

by:liljen_80
ID: 17913174
I have some more problems with ADO database connection, I would appreciate if you would take a look at this problem
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_22054714.html

Regards
Jan
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).
As a trusted technology advisor to your customers you are likely getting the daily question of, ‘should I put this in the cloud?’ As customer demands for cloud services increases, companies will see a shift from traditional buying patterns to new…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now