还是打包问题,关于创建表的语句不执行。。

wuhongyao3 2009-04-02 03:17:53
刚刚发了一贴怎么打包WINFORM程序,谢谢大家的帮忙。
基本上是完成了,但还有一点问题。
根据这个http://www.cnblogs.com/studio313/archive/2005/12/17/298951.html 完成的打包。

现在这样的,我在打包时候执行一个代码,用来创建数据库和表。


private string GetSql(string Name)
{
try
{
string path = this.Context.Parameters["targetdir"] + Name;
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
StreamReader reader = new StreamReader(fs, System.Text.Encoding.Default);
return reader.ReadToEnd();
}
catch (Exception ex)
{
Console.Write("In GetSql:" + ex.Message);
throw ex;
}
}
private void ExecuteSql(string DataBaseName, string Sql)
{
SqlConnection sqlConnection1 = new SqlConnection();
sqlConnection1.ConnectionString = string.Format("server={0}; user id={1}; password={2}; Database={3}", this.Context.Parameters["server"], this.Context.Parameters["user"], this.Context.Parameters["pwd"],DataBaseName );
System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql, sqlConnection1);
try
{
Command.Connection.Open();
Command.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.Write("In exception handler :" + ex.Message);
}
finally
{
Command.Connection.Close();
}
}
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
AddDBTable(this.Context.Parameters["dbname"]);
}
protected void AddDBTable(string strDBName)
{
try
{
ExecuteSql("master", "CREATE DATABASE " + strDBName);
string sql = GetSql("sql.txt");
ExecuteSql(strDBName, sql );
ExecuteSql("master", "exec sp_addlogin 'myoamaster','myoamaster','" + strDBName + "',Null,Null");
ExecuteSql(strDBName, "EXEC sp_grantdbaccess 'myoamaster', 'myoamaster'");
ExecuteSql(strDBName, "exec sp_addrolemember 'db_owner','myoamaster'");
}
catch (Exception ex)
{
Console.Write("In exception handler :" + ex.Message);
}
}


打包安装运行以后,数据库是新建了,但表没有新建


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[user]

CREATE TABLE [dbo].[user] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[userName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[pwd] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]

这个是SQL脚本。

首先我怀疑红字的地方,怀疑路径问题,然后我修改那行代码 string path = this.Context.Parameters["targetdir"] + @"\" + Name; 依然不行。

然后我新建一个WINFROM测试程序,用来测试这些代码,程序可以正常。

现在找不到那个地方的错误了

请大家再帮下忙

谢谢.
...全文
53 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mykelly6 2009-04-03
  • 打赏
  • 举报
回复
应该建了部署项目了吧,右键点在项目上,选属性,出现的窗体上有个必须组件的按钮,点那个就可以了
wuhongyao3 2009-04-02
  • 打赏
  • 举报
回复
好了,感觉就是路径的问题,现在按微软的,把SQL.TXT直接放到了资源里边..

还有就是,我打包时候能否包括.NET FRAMEWORK呢?

这个怎么做呢?
mykelly6 2009-04-02
  • 打赏
  • 举报
回复
我是直接把数据库备份恢复到目标数据库里面的。。。
是不是表所在的数据库没指定好

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧