我是C#的新手我想知道如何从数据库中检索整数值并将其存储在变量中。
之后,我需要使用此值添加已完成的另一个整数并将其存储回数据库。
我搜索了很多方法,但是给出的大多数方法都将它存储在数据网格视图中,但是我想在不显示的情况下进行计算。
SqlDataAdapter sql1 = new SqlDataAdapter("Select finaldays from LeaveTest where Id = '" + comboBox1.SelectedText + "'", con);//it will take from the selection of combobox
DataTable dt = new DataTable();
sql1.Fill(dt);
con.Open();
TimeSpan timespan1;
timespan1 = dateTimePicker3.Value - dateTimePicker2.Value;
int TotalDays = timespan1.Days+1;//total days that are taken from the datetimepicker
MessageBox.Show(TotalDays.ToString());//displaying the date for testing
答案 0 :(得分:2)
使用SqlCommand
。如果您只希望检索一个值ExecuteScalar
,那么这是最佳选择。另外,您应该使用参数来防止SQL注入。
SqlCommand cmd = new SqlCommand("Select finaldays from LeaveTest where Id = @id", con);
cmd.Parameters.Add("@id", SqlDbType.VarChar);
cmd.Parameters["@id"].Value = comboBox1.SelectedText;
try
{
conn.Open();
int result = (Int32)cmd.ExecuteScalar();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
如果每个ID可能有多个结果,则应使用SqlReader
并将结果存储在List
中(如示例中所示),或者在检索结果时使用它们:
SqlCommand cmd = new SqlCommand("Select finaldays from LeaveTest where Id = @id", con);
cmd.Parameters.Add("@id", SqlDbType.VarChar);
cmd.Parameters["@id"].Value = comboBox1.SelectedText;
try
{
List<int> resultList = new List<int>();
conn.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
resultList.Add((Int32)reader[0]);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
答案 1 :(得分:0)
你走在正确的轨道上,但这确实是你可以在Google上轻松找到答案的事情......
现在你已经填满了DataTable,你只需要获得对列值的引用。
FinalDays
由于您是C#的新手,我将解释这是做什么的。
这是一个“语法糖”,它试图将DataTable列中的值(即从数据库获得的值)解析为整数,并将解析后的整数值输出到@Override
public Void call() throws Exception {
InputStream in = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
readHeader(reader);
System.out.println("incoming message : " + header.get("Method"));
// read binary Content
int bytesRead = 0;
int bytesToRead = Integer.parseInt(header.get("Content-Length"));
content = new byte[bytesToRead];
while (bytesRead < bytesToRead) {
int result = in.read(content, bytesRead, bytesToRead - bytesRead);
if (result == -1)
break; // end of stream
bytesRead += result;
}
return null;
}
。如果解析工作(即,该值实际上是一个数字),则FinalDays将设置为数据库中的值,如果它不起作用,则FinalDays将设置为0。
答案 2 :(得分:0)
大家好我发现了另一个适合我的替代方案......希望能帮助遇到与我相同困难的其他人
con.Open();
string sqlSelectQuery = "Select * FROM LeaveTest";
SqlCommand cmd = new SqlCommand(sqlSelectQuery, con);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
TimeSpan timespan1;
timespan1 = dateTimePicker3.Value - dateTimePicker2.Value;
int totaldays = timespan1.Days;
textBox2.Text = (dr["finaldays"].ToString());
int finaldays = Convert.ToInt32(textBox2.Text)+totaldays;
//textbox2 is a temporary textbox(which is invisible)that is used to put the value finaldays in from the database
string sql1 = ("Update LeaveTest SET finaldays = '"+ finaldays + "' WHERE Id='" + comboBox1.Text + "'"); //updating the finaldays in database
SqlCommand cmd2 = new SqlCommand(sql1, con);
con.Close();
con.Open();
SqlDataReader dr2 =cmd2.ExecuteReader();
con.Close();
}
con.Close();
代码将计算2个日期时间选择器的总天数(总计天数)。数据库中的天数将被检索并添加总天数(最后一天)。我的解释可能有点不好但我希望你伙计们会从这段代码中受益。:)