|
SELECT TOP 5 * FROM SomeWhere WHERE Something = 'SomeCondition'
MSSQL doesn't support "LIMIT x, y" but it can be emulated through a somewhat... icky... nested subselection.
--
Henrik Stuart (http://www.unprompted.com/hstuart/)
|
|
|
|
|
Thanks, thats exactly what I needed.
Matt Newman
|
|
|
|
|
Also consider set rowcount n to stop processing of the result set after n rows (and set rowcount 0 to reset). The set rowcount is especially useful in a stored proc where you want to pass n (the # of rows) as a variable from your components/application.
Cheers,
Lee.
Lee H Fuller
lee@fullerdata.com
|
|
|
|
|
Hi,
can anyone explain the difference between finalize and dispose methods?Like which is used to release resources and when is best used?. Why are these methods declared as protected?
Any furthur reading suggestions,comments are welcome
|
|
|
|
|
Asking on the .NET Framework or C# forum would be better.
Finalization is built into the CLR. When the garbage collector collects an object, if it has a finalizer, the object is added to the finalization queue (and the memory containing the object is pushed up into the older generation - it isn't actually collected). A separate thread, the finalization thread, is used to actually call the finalizers. Once the finalizer for the object has run, the object's memory can be collected (unless the object has resurrected itself, but we'll forget that for the moment). The Finalize method is a special hint to the CLR - if you override Finalize, the above takes place.
Dispose is a design pattern (also, with the support of the IDisposable interface). By convention, it allows the programmer to release scarce resources once the object is finished with. You should implement this if you hold a resource that is limited (such as a drawing object, or a database connection) or that could cause contention with other parts of the program (such as files). In these cases, you would normally also have a finalizer to act as a backstop in case the user doesn't call Dispose. You can call GC.SuppressFinalize in your Dispose method to tell the CLR that you've done all the necessary cleanup and it no longer needs to call your finalizer.
The IDisposable interface allows programs and environments to detect whether a Dispose method is implemented without using Reflection (which is a lot more costly). C#'s using block automatically calls IDisposable.Dispose on the controlled object at the end of the block.
See MSDN: Implementing a Dispose Method[^].
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
can someone share me a sample code on how to open a connection in case my database is in the server. I am using MS Access 2000 for my database, and ADO, Visual C++ in my application.
your help is greatly needed...
i've seen some codes about it and im wondering if the user id and password parameters of the open function refers to the database password you set after you created your database. and how dsn string looks like..
please help me..
this is a new thing for me...
|
|
|
|
|
Try looking here[^]
Power corrupts and PowerPoint corrupts absolutely. - Vint Cerf
|
|
|
|
|
what if the the server requires a username and password? can i use the same username and password i have set in my workgroup information file?
how should the code look like? please help me...
|
|
|
|
|
Microsof Access is not a client/server db, but a file database. To open it on a server from a client workstation, the user account running the application must be able to mount the database as a file share. If the drive on theserver where the database is located is not always mapped to the same drive letter on the client, you will need to specify the datasource in the connection string as a UNC path (\\servername\sharename\path\filename.mdb). Password and username in the connection string must be what the access db (system.mdb) expect, not a server username/password.
Access in not a very robust "client/server" db. SQL server or MSDE would be a better soulution if you need true client/server performance.
Power corrupts and PowerPoint corrupts absolutely. - Vint Cerf
|
|
|
|
|
I have an Access database named Data and has set a password for it. When I tried to convert it to prior access database version (because I have to, otherwise, it will cause error in my Visual C++ application durion connection opening) the set database password option is disabled. so, my problem is how can i set a database password if my database has been converted...
please help me...
|
|
|
|
|
I don't understand why you have to convert it. ADO opens all versions (you just cant use Access 200 features on an access 95 or 97 database. If you are creating the database with ADOX, specify the version you want by add the "Jet OLEDB:Engine Type" property to your connection string (or read it if you are opening an older version and need to know the version).
See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k/html/adoproperties.asp[^]
Power corrupts and PowerPoint corrupts absolutely. - Vint Cerf
|
|
|
|
|
Got problems in ODBC programming in VC++ 6.0..I'm unable to retrieve Date/Time fields correctly..
sr = SQLBindCol(hstmt,6,SQL_TYPE_TIMESTAMP,date,sizeof(date),&ld);<br />
if(sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO)<br />
{<br />
displayError(sr, "Error in binding 6");<br />
}
datebeing CTime date[11];
Using the above code..
Can somebody please give me some suggestions?
|
|
|
|
|
SQL_TYPE_TIMESTAMP does not map to a datetime field but to a timestamp
I don't think you can bind directly to a Ctime struct. I think odbc wants
an SQL_C_TYPE_TIMESTAMP structure.
See this[^]
Power corrupts and PowerPoint corrupts absolutely. - Vint Cerf
|
|
|
|
|
It doesn't help either SQL_TYPE_DATE/SQL_C_TYPE_TIMESTAMP they all give the wrong data.
|
|
|
|
|
I domn't think your problem is with the type specifier, but with the data type of target you are trying to bind it to: CTime date.
the variable "date" should be an SQL_C_TYPE_TIMESTAMP stuct.
See this reference [^]for more info.
Dates in MS Access are a double: days and fractions of a day since 30 DEC 1899 12:00 AM Local time (an OLE Date) and pointer to a Ctime struct probably will not work. Try getting the date as a double, and doing the conversion yourself.
Power corrupts and PowerPoint corrupts absolutely. - Vint Cerf
|
|
|
|
|
:-DHey thanks for all the help, I worked out the way out...U were right but still there is better way...and a bit different than the way u suggested
DATE_STRUCT date;
sr = SQLBindCol(hstmt,1,SQL_C_TYPE_DATE,&date,sizeof(SQL_DATE_STRUCT),&ld);
if(sr != SQL_SUCCESS && sr != SQL_SUCCESS_WITH_INFO)
{
displayError(sr, "Error in binding 1");
}
The structure is exactly what the SQL query wants and works perfectly...
Thanks for everythng once again
|
|
|
|
|
I have a field in an Access table that is a Date/Time field but when I insert a new row into the dataset and update the database, the Date information is transfered but the Time information is not...it is set to zeros. Can anyone help??
<br />
this.dataSetLog.Log.AddLogRow(System.DateTime.Now, NewExp, ID, SN ); <br />
try<br />
{ <br />
this.DataAdapterLog.Update( this.dataSetLog ); <br />
}<br />
thanks in advance
CJE
|
|
|
|
|
Hi guys,
I think it's a simple question: I connect to a MySQL database with OdbcDataAdapter and I want to get the schema of the database directly from the database, so I use something like this:
public DataSet GetData()
{
DataSet ds = new DataSet(datasetName);
OdbcDataAdapter adapter = new OdbcDataAdapter();
adapter.SelectCommand = GetSelectAllCmd();
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
adapter.TableMappings.Add("Table", tableName);
adapter.Fill(ds);
if(ds.HasErrors)
ds.RejectChanges();
else
ds.AcceptChanges();
adapter.Dispose();
return ds;
} Everything seems working fine, but the schema isn't transfered correctly. The MaxLength property of the DataColumn member has the value of the longest entry in the database. For example if there is a column called 'name' and the database has an entry like 'John' the MaxLength property is 4. But I specified the 'name' column to allow 100 signs while creating the table (... name VARCHAR(100) NOT NULL, ...).
Furthermore I'm not able to change the MaxLength property. The following has no effect:
ds.Tables[tableName].Columns["name"].MaxLength = 100;
So I'm not able to insert a name to the 'name' column that is longer than 4. I get the error "The value violates the MaxLength limit of this column". Many thanks in advance!!!
Regards, mYkel
|
|
|
|
|
I have a client application using ADO to access an SQL Server Instance (or an MDSE instance actually) on intranet.
The intranet is 'protected' by a Firewall with IP forwarding activated using ipchains. SQL Server documentation tells to masq UDP port 1434 and TCP port corresponding to the instance of SQL server.
DOESN'T WORK
Connection creation fails lamentably...
Any help will save my life.
-MyttO
|
|
|
|
|
udp/1434 is used by SQL Server clients to discover the correct TCP port to use for a given instance (remember that SQL Server supports up to 15 named instances and 1 default instance on the same hardware). Each instance uses its own port; the default instance defaults to port 1433. Named instances default to the TCP stack's chosen next port number (i.e. bind is called with a 0 port number, if you're familiar with sockets programming).
Name resolution, to find the server, is done using the normal Windows mechanisms. On Windows 2000 or XP, this uses DNS and any HOSTS file first, then WINS if configured and any LMHOSTS file, then falls back on NetBIOS broadcasts. Windows NT 4.0 requires that the 'Enable DNS for Windows Resolution' checkbox is checked to resolve names using DNS. Ensure that the client computer can ping the server by name (this won't work if the firewall blocks ICMP echo, of course).
You can configure the TCP port used either using the Server Network Utility (available on the server's start menu) or by clicking Network Configuration on the General tab of the instance's properties in Enterprise Manager. If using the Server Network Utility, select the appropriate Firstly, ensure that the TCP/IP protocol is in the Enabled Protocols list. Select TCP/IP in Enabled Protocols and click Properties. You can set the default port for this instance in this box.
Next, check your MDAC version on the client. It should be at least version 2.6 if connecting to SQL Server 2000, with the MDAC service pack at least the same as the server. For SQL Server 2000 SP3(a), use at least MDAC 2.7 SP1. Obtain MDAC from MSDN's Data Access Developer Centre Downloads[^]. You can check your current version with the MDAC Component Checker[^].
You should also check that the client is configured to use TCP/IP. Run cliconfg on the client computers, and check that TCP/IP is in the Enabled Protocols list. If you're not going to allow NetBIOS-over-TCP/IP (NBT), you might as well disable the Named Pipes protocol on the client.
If you're using a non-default instance, and you've decided to block udp/1434, you may need to use the Alias tab to add an alias for your instance. This allows you to specify the IP address and port for a given name. You could consider doing this if your name resolution isn't working.
For more information, see KB article 287932: INF: TCP Ports Needed for Communication to SQL Server Through a Firewall[^].
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
Just a quick addendum: if you're using a trusted connection, that is, Windows authentication, and your client computers are part of a Windows NT 4.0 domain (or Windows 2000 or Server 2003 in mixed mode), you'll need to ensure that the server can contact its own domain controller in order to authenticate the client (and that the server's DC trusts and can contact the client's DC, if server and client are members of different domains).
Windows 2000 and Server 2003 Active Directory don't have this problem, because the client obtains its ticket from its own domain controller itself, so the server is not required to contact the domain controller.
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
Thanks a thousand times
Now it works fine!
-MyttO
|
|
|
|
|
Hi...
I have a Crystal report witch is connected to at local DataSet(dataTabel)...
Every thing seems to work well...but when I compile and the program starts...it
aks for login/pass to the database and I don't use login/pass at all...??
What do I do wrong??
I choose to connect through the project ADO.NET Dataset...--> myDataTable in the "Report Expert" wizard in Visual Studio...
I REALLY hope you can help me in some way...course I have spend too much time
with this prob already...
PabloPablo
|
|
|
|
|
Hi,
I have the same problem. I use a dataset that is passed to my ClassViewer(the form that would show the report).
but it continues to ask me data server name, database name, id and pwd.
Bye
|
|
|
|
|
Actually I'am pretty sure...that it is not possible to do it..
Use Microsoft Access and JET 4.0 database provider instead...
It works...and is much faster...as it make queries directly on the data in the database(your Access file)....
Best regards
/PabloPablo
|
|
|
|