如何用代码实现在应用程序当前目录新建sql server数据库?

moon_prince 发布于 2012/04/12 15:09
阅读 658
收藏 1
RT。

假如我建库的代码是这样:

str = "CREATE DATABASE MyDatabase ON PRIMARY " + 
"(NAME = MyDatabase_Data, " + 
"FILENAME = 'C:\\MyDatabaseData.mdf', " + 
"SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " + 
"LOG ON (NAME = MyDatabase_Log, " + 
"FILENAME = 'C:\\MyDatabaseLog.ldf', " + 
"SIZE = 1MB, " + 
"MAXSIZE = 5MB, " + 
"FILEGROWTH = 10%)"; 

现在里边的“FILENAME =”应该怎么改,就能实现题目的要求?

我写成:

"FILENAME = Application.ExecutablePath+"+"\\MyDatabaseData.mdf,"

后出错了

加载中
0
红薯
红薯
把错误列出来吧
0
moon_prince
moon_prince

引用来自“红薯”的答案

把错误列出来吧

哇,第一次离老大这么近!老大好!

局部代码如下:

 

string connString = @"server=.\sqlexpress;integrated security=SSPI;database=master";
            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();

出错的提示:

 

False!System.Data.SqlClient.SqlException: '.' 附近有语法错误。
字符串 ',SIZE = 1MB, MAXSIZE = 5MB, FILEGROWTH = 10%)' 后的引号不完整。
   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolea
n breakConnection)
   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception
, Boolean breakConnection)
   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObj
ect stateObj)
   在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cm
dHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, Tds
ParserStateObject stateObj)
   在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName,
Boolean async)
   在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult res
ult, String methodName, Boolean sendToPipe)
   在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   在 CreateSql.Program.Main(String[] args) 位置 C:\Documents and Settings\Tansi
on\桌面\create database\ConsoleApplication1\ConsoleApplication1\Program.cs:行号
31

里面说的行号31是指

myCommand.ExecuteNonQuery();   这一句

0
moon_prince
moon_prince

唉,对自己无语了,

"FILENAME = Application.ExecutablePath+" + \\MyDatabaseLog.ldf',

.ldf后面的单引号'去掉后不警告这个了,但又出现新的警告:

 

False!System.Data.SqlClient.SqlException: '.' 附近有语法错误。
   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolea
n breakConnection)
   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception
, Boolean breakConnection)
   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObj
ect stateObj)
   在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cm
dHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, Tds
ParserStateObject stateObj)
   在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName,
Boolean async)
   在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult res
ult, String methodName, Boolean sendToPipe)
   在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   在 CreateSql.Program.Main(String[] args) 位置 C:\Documents and Settings\Tansi
on\桌面\create database\ConsoleApplication1\ConsoleApplication1\Program.cs:行号
31

这个就不知道怎么回事了。

0
firstrose
firstrose
把拼出的sql语句取出来,放在企业管理器里运行一下就知道错在哪里了。
0
moon_prince
moon_prince

引用来自“穿衣服比较麻烦”的答案

前后单引
哪个前哪个后?
0
moon_prince
moon_prince

引用来自“firstrose”的答案

把拼出的sql语句取出来,放在企业管理器里运行一下就知道错在哪里了。
建库的语句在企业管理器里怎么拼?
返回顶部
顶部