首页 新闻 会员 周边 捐助

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

0
悬赏园豆:30 [待解决问题]

如题。

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

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文件的目录,为应用程序当前所在目录(请见上方代码)

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

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();

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

jackyy的主页 jackyy | 初学一级 | 园豆:129
提问于:2012-04-13 09:08
< >
分享
所有回答(3)
0
C:\Documents and Settings\Tansion\桌面 
\create database\WindowsFormsApplication1\WindowsFormsApplication1

\bin\Debug\WindowsFormsApplication1.EXE

这个路径是否存在?

artwl | 园豆:16736 (专家六级) | 2012-04-13 09:25

你好。

我用Application.ExecutablePath定义路径,即是当前应用程序的路径。那么只要应用程序没被删掉,路径就永远存在的吧?

支持(0) 反对(0) jackyy | 园豆:129 (初学一级) | 2012-04-13 09:53
0
C:\Documents and Settings\Tansion\桌面 \create database\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.EXE
这是应用程序本身的名称或者叫应用程序的全路径,此时系统要去找这个路径是找不到的,可以处理的方法有两种:
1、截取这个字符串路径。
2、用这个方法去取路径Application.StartupPath
az235 | 园豆:8483 (大侠五级) | 2012-04-13 19:11
0
C:\Documents and Settings\Tansion\桌面 \create database\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.EXE  这只是个文件, 不是目录, 咱可能在这下面创建文件呢?
Chao Hong | 园豆:244 (菜鸟二级) | 2012-04-25 17:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册