我想在C#中使用字母数字作为销售发票,并将其存储到SQL数据库中。
例如,LG / slae / 1000,LG / sales / 1001等
这是我目前的代码。它仅适用于int值。如何修改它以使用字母数字值?
public class SALESINVOICE
{
public string Sales_Invoice {get; set;}
public string Customer_Name {get; set;}
public string Mobile_No {get; set;}
public string Address {get; set;}
public string Item_Name {get; set;}
public string Item_Code {get; set;}
public string Dept {get; set;}
public string Date {get; set;}
public int Qty {get; set;}
public int Rate {get; set;}
public int Vat_tax {get; set;}
public int Amount {get; set;}
public int Payment_Type {get; set;}
public int Purchase_ID { get; set; }
string myConnection = ("user id=username;" +
"password=password;server="";" +
"Trusted_Connection=yes;" +
"database=""; " +
"connection timeout=30");
# region
public void retriveData()
{
string selQuery="select sales_invoice from sales";
try
{
SqlConnection conn= new SqlConnection (myConnection);
conn.Open();
SqlCommand cmd = new SqlCommand (selQuery, conn);
Sales_Invoice=(string)cmd.ExecuteScalar()+1;
conn.Close();
}
catch
{
Sales_Invoice=LG/SALES/1000;
答案 0 :(得分:0)
据推测,您的ExecuteScalar
会返回类似“LG / SALES / 1000”的字符串。您正在尝试向其添加整数值(1),这将无效。您可能希望解析(即Split()
方法)将字符串分成3部分,将最后一部分转换为整数,然后将1添加到该整数。然后,您可以将更新的整数强制转换回String
,使用Join()
方法将部件重新组合在一起(由“/”分隔),以便您可以使用/存储新值。
此外,在catch
块中,您指定的值明显是字母数字(字符串),但您没有围绕值的双引号。这将永远不会奏效。
至少修正这两件事,如果你还有一个问题,也许澄清你的问题。
编辑,OP发表评论后
好的,所以这里是一个简单的WinForms应用程序的代码(1个表单,5个texbox和一个按钮,当你看到下面的代码时,所有这些都是自我解释的:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Increment();
}
private void Increment()
{
//Split the original string
//NOTE: textBox1 already contains the text "LG/SALES/1000" in this example
string[] tempArray = textBox1.Text.Split('/');
//Display resulting array just for verification
textBox2.Text = tempArray[0];
textBox3.Text = tempArray[1];
textBox4.Text = tempArray[2];
//Convert last part to an int and add 1
string tempId = tempArray[2];
int id = Convert.ToInt32(tempId);
id = id + 1;
//Make new alpha-numeric value with incremented id
string autoId = "LG/SALES/" + String.Format("{0:0000000}", id);
textBox5.Text = autoId;
}
}
请注意,我在评论中发布的代码与您的代码非常相似。换句话说,它起作用。我不确定你为什么要像你那样格式化“递增”数字(你使原来的“1000”增加并用前导零格式化,所以结果变成“00001001” - 你可能只想使用“G” “对于通用格式,或者只是int的.ToString()
方法,但这是您的选择。
希望这有帮助!