也许是重复的,但是我用谷歌搜索却没有找到答案。
我通过.net开发了一个程序,该程序具有在我的计算机上可以很好运行的本地数据库(Express),但是当我创建设置和安装时,它无法插入或更新,例如在{{1 }}我有
Delete()
try
{
}
catch
{
}
文件中的总是转到exe
部分,我不知道为什么:((
这是我的连接字符串:
catch{}
这是我的方法之一,例如:
Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;Connect Timeout=30
必须说我将private Boolean Delete(int id)
{
//String conString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\Parnian\\documents\\visual studio 2017\\Projects\\Bank\\Bank\\Database.mdf;Integrated Security=True";
SqlConnection sql = new SqlConnection(Connection);
String sqll = "Delete FROM TblBank WHERE Id =@id ";
try
{
sql.Open();
SqlCommand cmd = new SqlCommand(sqll, sql);
cmd.Parameters.AddWithValue("id", id);
cmd.CommandType = System.Data.CommandType.Text;
cmd.ExecuteNonQuery();
sql.Close();
return true;
}
catch (Exception ex)
{
MessageBoxEx.Show("have some problem", "wrong", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
和.mdf
文件放入安装文件夹,并通过Visual Studio Installer进行安装
答案 0 :(得分:2)
尝试一下
private bool Delete(int id)
{
string connString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\Parnian\\documents\\visual studio 2017\\Projects\\Bank\\Bank\\Database.mdf;Integrated Security=True";
SqlConnection sqlConn = new SqlConnection(connString);
String sql = "Delete FROM TblBank WHERE Id =@id ";
try
{
sqlConn.Open();
SqlCommand cmd = new SqlCommand(sql, sqlConn);
cmd.Parameters.AddWithValue("id", id);
cmd.CommandType = System.Data.CommandType.Text;
cmd.ExecuteNonQuery();
sql.Close();
return true;
}
catch (Exception ex)
{
MessageBoxEx.Show(ex.Message, "wrong", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
这样您就可以查看错误是什么。目前,您只是说ex
包含调试问题所需的一切时出了问题。
希望这会有所帮助。
(还有一些要重构的东西,例如将连接包装在using
语句中。)
答案 1 :(得分:1)
@Parnian 应该需要在系统中安装本地数据库。 1.单击服务器对象资源管理器,然后单击Localdb服务器时,将从属性中获取正确的连接字符串。
enter code here static void Main(string[] args)
{
TestConncetion testConncetion = new TestConncetion(Delete);//here I used delegate
WriteLine($"My connection string is working Fine ,result is {testConncetion(1)}");
}
private static bool Delete(int id)
{
string Connection = @"Data Source=(localdb)\ProjectsV13;Initial Catalog=master;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
//String conString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\Parnian\\documents\\visual studio 2017\\Projects\\Bank\\Bank\\Database.mdf;Integrated Security=True";
SqlConnection sql = new SqlConnection(Connection);
string sqll = "Delete FROM TblBank WHERE Id =@id ";
try
{
sql.Open();
SqlCommand cmd = new SqlCommand(sqll, sql);
cmd.Parameters.AddWithValue("id", id);
cmd.CommandType = System.Data.CommandType.Text;
cmd.ExecuteNonQuery();
sql.Close();
return true;
}
catch (Exception ex)
{
WriteLine("have some problem", "wrong", ex.Message);
return false;
}
}
答案 2 :(得分:0)
问题的原因非常简单。您的情况可能有两种情况。它们如下:
您尝试运行该应用程序的计算机没有正确版本的sql server。
解决方案::在这种情况下,您必须找出创建数据库的SQL Server版本。然后,您必须将该SQL Server版本包含在setup.exe程序包中。这样,当setup.exe执行适当的sql服务器时,还会使用您的应用程序进行设置。
您尝试设置应用程序的计算机具有正确的sql版本,但仍然出现错误。
解决方案:首先删除现有数据库,然后从解决方案资源管理器中创建新数据库。然后使用此特定的connection string given below
SqlConnection conn =新
SqlConnection(global :: ProjectName
。Properties.Settings.Default。ProjectConnectionString
);
ProjectConnectionString
文件中找到 App.config
。
希望这会有所帮助。随时在评论中询问是否需要。