我有一個問題,我真的需要你的幫助。請儘快幫助我。這是我的故事。我在Visual Studio中爲我的項目創建了一個本地數據庫。我的意思是我右鍵單擊我的項目,然後選擇添加並將服務基礎數據庫添加到我的項目中,名稱爲OCRDataBase
。C#中的本地數據庫與存儲過程
我的第一個問題是這樣的:我在Visual Studio中的服務器資源管理器菜單此存儲過程對我的數據庫
CREATE PROCEDURE [dbo].[CheckDataBase]
@Shape int ,
@p1 int ,
@p2 int ,
@p3 int ,
@p4 int ,
@output nvarchar(10) out
as
Begin
select
@output = [Character]
from
dbo.OCRTable
where
Style = @Shape
and Part1 = @p1 and Part2 = @p2 and Part3 = @p3 and Part4 = @p4;
if(@output is null)
select @output = '[Unknown]';
End
我有6列(id, style, part1, part2, part3, part4
,字符)的表。
這個存儲過程應該返回字符,如果沒有任何字符匹配存儲過程條件,它假設返回'[Unknown]';
我寫在Visual Studio此功能來獲取值這個這個存儲過程返回
static public string Check(int Shape, int p1, int p2, int p3, int p4)
{
string FunctionOutput = "";
try
{
Connection.Open();
SqlCommand SqlCommands = new SqlCommand("[dbo].[CheckDataBase]", Connection);
SqlCommands.CommandType = CommandType.StoredProcedure;
SqlCommands.Parameters.AddWithValue("@Shape", Shape);
SqlCommands.Parameters.AddWithValue("@p1", p1);
SqlCommands.Parameters.AddWithValue("@p2", p2);
SqlCommands.Parameters.AddWithValue("@p3", p3);
SqlCommands.Parameters.AddWithValue("@p4", p4);
SqlParameter OutputParameter = new SqlParameter();
OutputParameter.ParameterName = "@output";
OutputParameter.SqlDbType = SqlDbType.NVarChar;
OutputParameter.Direction = ParameterDirection.Output;
SqlCommands.Parameters.Add(OutputParameter);
SqlCommands.ExecuteNonQuery();
FunctionOutput = OutputParameter.Value.ToString();
MessageBox.Show(FunctionOutput);
}
catch (SqlException exception)
{
MessageBox.Show(exception.ToString());
}
finally
{
Connection.Close();
}
return FunctionOutput;
}
但當SqlCommand.ExecuteNonQuery();
執行,此消息顯示出來:
類型的未處理的異常「系統.InvalidOperationException'發生在System.Data.dll中
附加信息:字符串[5]:Size屬性的無效大小爲0.
我該怎麼辦?請幫幫我。
我的第二個問題是如何給該數據庫提供相對地址,以便我可以從任何文件夾和任何計算機上運行我的應用程序。
這是我的數據庫連接:
static private SqlConnection Connection = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\Modem Project\PROJECT\OCR\OCR\OCRDataBase.mdf;Integrated Security=True");
我嘗試寫
..\..\OCRDataBase.mdf instead of D:\Modem Project\PROJECT\OCR\OCR\OCRDataBase.mdf
但是,這是Visual Studio的消息:
已經有該名稱在數據庫中這個文件夾。
看來Visual Studio想取代它。
感謝您的幫助。
你只有經過5個PARAMS VS 7你爲什麼不看再次傳遞參數 '我有5行表(id,style,part1,part2,part3,part4,Character)'如果不是這種情況你可以手動運行SQL服務器管理工作室和硬編碼的價值,看看它是否工作。 – MethodMan