我正在爲我的老闆在工作時的報價管理員工作,我遇到了一些問題。這是一個WPF C#應用程序,這是我第一次構建與SQL Server數據庫一起工作的任何東西。我目前有三個問題。INSERT聲明中的問題(我認爲)
背景:
當用戶打開他們與一個DataGrid,一個新的報價按鈕,我尚未創建其他幾個控件招呼應用。當他們按下新的報價按鈕時,會彈出一個新窗口,其中會顯示一個窗體,其中包含用於客戶名稱,數量等的文本框。窗體的底部是一個提交按鈕,此時窗口將關閉,他們添加的信息將作爲新行插入到DataGrid中。
問題一:
一個在我的數據庫中的字段被稱爲Open_Quote,它應該是保持我們收到的訂單的日期。這是以編程方式處理的,也是我第一個問題涉及的問題。我將在此帖子底部包含所有代碼,但是當用戶點擊提交時,我收到以下錯誤:「轉換日期和/或時間字符串時轉換失敗。」
問題二:
在試圖測試我的代碼的休息,回去以後再修改日期的問題,我評論說出來的代碼,並試圖再次運行我的程序。這次我得到了一個不同的錯誤:「'newQuote.Qty'的語法錯誤。」
問題三:
再次出注釋代碼,以最終測試我的代碼的其餘部分,我收到了第三個錯誤:「字符串或二進制數據將被截斷這一進程已被終止。」
我的希望是有一段代碼會導致所有這三個問題,但我可能完全在那裏。試圖弄清楚這一點,我一直在拉我的頭髮。總之,這裏的代碼:
newQuote.xaml.cs:
private void SubmitQuotebtn_Click(object sender, RoutedEventArgs e)
{
CustomerData newQuote = new CustomerData();
int quantity;
quantity = Convert.ToInt32(Qtytxt.Text);
string theDate = System.DateTime.Today.Date.ToString("d");
newQuote.OpenQuote = theDate;
newQuote.CustomerName = CustNametxt.Text;
newQuote.OEMName = OemNametxt.Text;
newQuote.Qty = quantity;
newQuote.QuoteNumber = QuoteNumtxt.Text;
newQuote.FdNumber = FabDrawingNumtxt.Text;
newQuote.RfqNumber = RfqNumtxt.Text;
newQuote.RevNumber = RevNumtxt.Text;
try
{
string insertConString = Sqtm.Properties.Settings.Default.SqtmDbConnectionString;
using (SqlConnection insertConnection = new SqlConnection(insertConString))
{
insertConnection.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO General_Info(Open_Quote, Customer_Name, OEM_Name, Qty, Quote_Num, Fab_Drawing_Num, "
+ "Rfq_Num, Rev_Num) values('newQuote.OpenQuote', 'newQuote.CustomerName', 'newQuote.OemName', 'newQuote.Qty' "
+ "'newQuote.QuoteNumber', 'newQuote.FdNumber', 'newQuote.RfqNumber', 'newQuote.RevNumber')", insertConnection);
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
CustomerData.cs:
class CustomerData
{
private string _CustomerName;
private string _OEMName;
private string _OpenQuote;
private int _Qty;
private string _QuoteNumber;
private string _FdNumber;
private string _RfqNumber;
private string _RevNumber;
public CustomerData()
{
// empty constructor
}
public string CustomerName
{
get { return _CustomerName; }
set { _CustomerName = value; }
}
public string OpenQuote
{
get { return _OpenQuote; }
set { _OpenQuote = value; }
}
public string OEMName
{
get { return _OEMName; }
set { _OEMName = value; }
}
public int Qty
{
get { return _Qty; }
set { _Qty = value; }
}
public string QuoteNumber
{
get { return _QuoteNumber; }
set { _QuoteNumber = value; }
}
public string FdNumber
{
get { return _FdNumber; }
set { _FdNumber = value; }
}
public string RfqNumber
{
get { return _RfqNumber; }
set { _RfqNumber = value; }
}
public string RevNumber
{
get { return _RevNumber; }
set { _RevNumber = value; }
}
}
而作爲一個參考,這裏是我如何SQLServer中設置此表:
Open_Quote, date, not null
Customer_Name, varchar(25), not null
OEM_Name, varchar(25), null
Qty, int, not null
Qute_Num, varchar(20), null
Fab_Drawing_Num, varchar(20), not null
Rfq_Num, varchar(10), null
Rev_Num, varchar(10), null
在此先感謝任何幫助我的人,
- 安德魯
一切都在引號...所以你只是將這些字符串值,而不是實際的變量。嘗試值(''+ newQuote.OpenQuote +''「等等...或者只是使用參數,它會更容易閱讀 – MikeSmithDev
,並且如果直接對數據庫運行插入操作,您是否會看到相同的錯誤(即 - )或者甚至在你的應用中硬編碼值,以查看是否有任何組合的數據可以工作,然後你可以向後工作。 –
它沒有通過日期newQuote.OpenQuote,他是傳遞字符串'newQuote.OpenQuote'。使用參數http://www.dotnetperls.com/sqlparameter – MikeSmithDev