none
代码create database时出现了操作系统错误123,求改错的方法

    问题

  • 如题。

    我用代码创建数据库,局部代码如下:

    string connString = @"server=.\sqlexpress;user id=sa;password=123";
    
    SqlConnection myConn = new SqlConnection(connString);
    
    string str = "CREATE DATABASE MyDatabase ON PRIMARY " +
                "(NAME = MyDatabase_Data, " +
                "FILENAME ='"+ Application.ExecutablePath+ "\\MyDatabaseData.mdf'," +
                "SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
                "LOG ON (NAME = MyDatabase_Log, " +
                "FILENAME ='"+ Application.ExecutablePath+ "\\MyDatabaseLog.ldf'," +
                "SIZE = 1MB, " +
                "MAXSIZE = 5MB, " +
                "FILEGROWTH = 10%)";
                SqlCommand myCommand = new SqlCommand(str, myConn);
                try
                {
                    myConn.Open();
                    myCommand.ExecuteNonQuery();


    建库的时候定义创建的mdf文件的目录,为应用程序当前所在目录(请见上方代码)

    但是运行时出现下方的错误:

    False!System.Data.SqlClient.SqlException: 对文件 "C:\Documents and Settings\Tansion\桌面
    
    \create database\WindowsFormsApplication1\WindowsFormsApplication1
    
    \bin\Debug\WindowsFormsApplication1.EXE\MyDatabaseData.mdf" 的目录查找失败,出现操作系统错误 
    
    123(文件名、目录名或卷标语法不正确。)。
    CREATE DATABASE 失败。无法创建列出的某些文件名。请查看相关错误。
       在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean 
    
    breakConnection)
       在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean 
    
    breakConnection)
       在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject 
    
    stateObj)
       在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, 
    
    SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject 
    
    stateObj)
       在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean 
    
    async)
       在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String 
    
    methodName, Boolean sendToPipe)
       在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
       在 WindowsFormsApplication1.Form1.button1_Click(Object sender, EventArgs e) 位置 
    
    C:\Documents and Settings\Tansion\桌面\create database\WindowsFormsApplication1
    
    \WindowsFormsApplication1\Form1.cs:行号 55

    其中,行号55 是指

     myCommand.ExecuteNonQuery();

    这一句。

    不知是哪里出错了,请大家指教!

    2012年4月12日 16:13

答案

全部回复