|
Or from within the stored procedure you can use something like this:
declare @test as nvarchar(40)
set @test = 'C:\\test\\rubbish\\file.asp'
select replace(@test, '\\', '\')
|
|
|
|
|
That will not do anything at all, as the string doesn't contain any double backslashes.
---
single minded; short sighted; long gone;
|
|
|
|
|
Martin# wrote: filename.Replace("\\","\");
That won't even compile. What you intended to write was:
filename.Replace("\\\\","\\");
or
filename.Replace(@"\\",@"\");
However, that will not do anything at all, as the string doesn't contain any double backslashes.
---
single minded; short sighted; long gone;
|
|
|
|
|
Sure!
All the best,
Martin
|
|
|
|
|
LOL, that wont compile
|
|
|
|
|
Mark06 wrote: sp_UpdateLogFile
Don't put "sp_" in the name of your stored procedure. "sp_" stands for "system procedure", and they are handled differently from normal stored procedures.
Mark06 wrote: sql doesnt accept the \\ directory seperators
First of all, your string doesn't contain any double backslashes. The backslash is the escape character in string literals in C#. When you put double backslashes in a string literal, the string will contain a single backslash.
Second, the database has no problems with backslashes in string literals. In MS SQL the apostrophe is the escape character, the backslash has no special meaning at all.
What has made you come to the conclusion that the database would have any problem with double backslashes, especially as your string doesn't even contain any?
---
single minded; short sighted; long gone;
|
|
|
|
|
Guffa wrote: Don't put "sp_" in the name of your stored procedure. "sp_" stands for "system procedure", and they are handled differently from normal stored procedures.
Specifically, SQL Server looks in the master database first, before looking in the database you're actually trying to use. This extra lookup doesn't cost a lot of time, but could break your application if Microsoft, or someone else, add a procedure with that name to the master database at a later date.
|
|
|
|
|
The backslash is an escape character within a string literal in C-based languages (C, C++, C#, Java), used to include non-printable characters within a string (for example, the newline character U+000A[^] is represented as '\n' ). For that reason, to get an actual backslash in the string, you have to double it. This is processed by the compiler - in the compiled file, only a single backslash appears. Therefore you don't need to do anything to remove them at runtime - the compiler has already done it.
C# also supports @-quoted strings where the backslash is a literal backslash, not an escape character. The only escape available for this type of literal is "", which indicates that a single " character should be included in the string.
|
|
|
|
|
appologies, I was trying to keep it simple.
I'm actually calling the stored proc 'sp_attach_db'
and I've tried command.CommandText.Replace("\\",@"\");
but it didnt do anything to the commandtext value.
|
|
|
|
|
ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref2/html/M_System_String_Replace_1_d460c748.htm
use filename.replace("\\","\")
|
|
|
|
|
That's not surprising, both literals end up as a single backslash.
I suggest you post the actual problem you're encountering on the SQL/ADO/ADO.NET forum.
|
|
|
|
|
but this isnt an sql problem.
the problem is, c# setting a commandtext to "sp_attach_db N'c:\\temp\\logfile.txt'" when it should be "sp_attach_db N'c:\temp\logfile.txt'"
the actual sql command is irrelevant. its the double slashes thats the issue.
|
|
|
|
|
Mark06 wrote: the problem is, c# setting a commandtext to "sp_attach_db N'c:\\temp\\logfile.txt'" when it should be "sp_attach_db N'c:\temp\logfile.txt'"
It doesn't.
Why do you think that it would?
---
single minded; short sighted; long gone;
|
|
|
|
|
Damn debugger watch window (and tooltips) shows it as doubled.
|
|
|
|
|
Yup, that'll be it!!
|
|
|
|
|
Visual Studio shows escapes in the C# debugger watch window and tooltips. I think that's a stupid idea, but there you are: that's what it does.
If you output the string to the console (Console.WriteLine) you will see that the backslashes are not doubled. If you're having trouble attaching the database, please ask on the other forum (including all error messages) - this is not the problem.
|
|
|
|
|
Never, never apply Console.WriteLine on a suspicious variable.
You might find the cause of a problem...
|
|
|
|
|
Mark06 wrote: I've tried command.CommandText.Replace("\\",@"\");
but it didnt do anything to the commandtext value.
Of course not. You are replacing each single backslash with a single backslash.
Also, the Replace method doesn't change the string, it returns the new string, so you have to use the result of the method:
str = str.Replace("\\\\", "\\");
Still, the string literal that you showed doesn't contain any double backslashes, so that will not have any effect at all.
What has made you come to the conclusion that the database has any problems with double backslashes, and why do you think that your string contains any?
---
single minded; short sighted; long gone;
|
|
|
|
|
Hey all,
OK, I know how to get the hard drives installed on a system. Please I need to know how to retrieve the serial number of a hard disk. Can I use DriveInfo? Don,t think so.
Thanx a lot,
all d best.
|
|
|
|
|
No, you can't use DriveInfo. You'll probably have to use a p/invoke function. Check out this one.
Standards are great! Everybody should have one!
|
|
|
|
|
You can only get the drive's serial number (printed on the case) if the drive manufacturer provides a way to do this.
You can get the volume serial number, generated by Windows, using the GetVolumeInformation function. Here[^] is a P/Invoke declaration for that function.
Microsoft defines a volume like so:
"An area of storage on a hard disk. A volume is formatted by using a file system, such as FAT or NTFS, and has a drive letter assigned to it. You can view the contents of a volume by clicking its icon in Windows Explorer or in My Computer. A single hard disk can have multiple volumes, and volumes can also span multiple disks."
- from Windows XP's Help and Support Center.
Note that even this is not the full story, as a volume may not have a drive letter. Since Windows 2000, a volume can appear as a directory under another volume (if the first volume is formatted with NTFS) - this is referred to as a volume mount point.
|
|
|
|
|
|
Zeno, thanx a lot really appreciate your help.
Thanx a lot,
all d best.
|
|
|
|
|
|
i was understanding the diference between the
internal
and
internal protected
to understand the access limits.
for that i wrote the following example.
class abc
{
internal protected int f=0;
internal int h = 0;
}
class def: abc
{
void f1()
{
}
}
both f and h are accessible in the class def.
is there any access limits or u can say any point that constraints the access limits of internal and internal protected member function/data.
Sonia Gupta
Soniagupta1@yahoo.co.in
Yahoo messengerId-soniagupta1
Love is Friendship and Friendship is Love....
|
|
|
|