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

  • 问题

  • 我建库的代码是这样:

    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%)";

    但是语句出错了,不知怎么回事,请教下大家。

    2012年4月12日 8:26

答案

  • 請問你使用的是哪種專案類型,要使用Application.ExecutablePath必須要用Windows Form專案。

    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    • 已标记为答案 moon_prince 2012年4月12日 15:15
    2012年4月12日 14:25

全部回复

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

    这一句似乎字符串拼接错误

    另外,有错误讯息吗?


    2012年4月12日 8:48
  •     "FILENAME = Application.ExecutablePath+"+\\MyDatabaseData.mdf,+

    这一句似乎字符串拼接错误

    另外,有错误讯息吗?


    错误信息如下:

    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:行号
    54
    

    行号54是指这一句:

    myCommand.ExecuteNonQuery();

    2012年4月12日 9:00
  • 或許你可以改成這樣試試看。

    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%)";


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年4月12日 9:10
  • 或許你可以改成這樣試試看。

    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%)";


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    出错了,在Application.ExecutablePath处显示:当前上下文不存在名称Application

    2012年4月12日 13:15
  • 請問你使用的是哪種專案類型,要使用Application.ExecutablePath必須要用Windows Form專案。

    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    • 已标记为答案 moon_prince 2012年4月12日 15:15
    2012年4月12日 14:25
  • 請問你使用的是哪種專案類型,要使用Application.ExecutablePath必須要用Windows Form專案。

    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    好吧我承认我是用控制台的T T
    2012年4月12日 14:37
  • 或許你可以改用下列的方式來取得目前專案的路徑。

    AppDomain.CurrentDomain.BaseDirectory
    System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年4月12日 22:17