开发者社区> 问答> 正文

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

如何用代码实现在应用程序当前目录新建sql server数据库?? 400 报错 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,"

后出错了

展开
收起
爱吃鱼的程序员 2020-06-04 16:29:47 569 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    把错误列出来吧
    ######前后单引######

    引用来自“红薯”的答案

    把错误列出来吧

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

    局部代码如下:

     

    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();   这一句

    ######

    唉,对自己无语了,

    "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

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

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

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

    前后单引
    哪个前哪个后?
    ######

    引用来自“firstrose”的答案

    把拼出的sql语句取出来,放在企业管理器里运行一下就知道错在哪里了。
    建库的语句在企业管理器里怎么拼?
    2020-06-04 17:09:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载