Запись значений в базу данных sql - PullRequest
0 голосов
/ 03 мая 2011

Я пытаюсь записать три переменные в таблицу базы данных.У меня есть код:

sqlCmd.CommandText = "INSERT INTO dbo.PortfolioValues(StudentNumber,TimeStamp,PortfolioValue) VALUES(StudentNumber.ToString() , Time.ToString() , Total.ToString())" + dbConnection;
                sqlCmd.ExecuteNonQuery();
                sqlTran.Commit();

dbconnection - это имя соединенияЭто ничего не делает.Это в попытке поймать, но идет прямо, чтобы поймать.Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 03 мая 2011

Вы должны

  • избегайте конкатенации вашего оператора SQL - избегайте атак с использованием SQL-инъекций! Вместо этого используйте параметризованные запросы !
  • используйте, используя блоки для ваших SqlConnection и SqlCommand объектов

Попробуйте что-то вроде этого:

string _connString = "........";

string queryStmt =
   "INSERT INTO dbo.PortfolioValues(StudentNumber, TimeStamp, PortfolioValue) " +
   "VALUES(@StudentNumber, @TimeStamp, @TotalValue)";

using(SqlConnection _con = new SqlConnection(_connString))
using(SqlCommad _cmd = new SQlCommand(queryStmt, _con))
{
   // create paramters and set values
   _cmd.Parameters.Add("@StudentNumber", SqlDbType.Int).Value = StudentNumber;

   // do the same for the other two parameters

   try
   {
      _con.Open();
      _cmd.ExecuteNonQuery();
      _con.Close();
   }
   catch(Exception exc)
   {
      // handle exception
   }
}
0 голосов
/ 03 мая 2011
//Am asuming you are using C# and the System.Data.SqlClient
//here is how you might do what you want

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}

//so that you use it this way:

String query = String.Formart("INSERT INTO dbo.PortfolioValues(StudentNumber,TimeStamp,PortfolioValue) VALUES(\"{0}\",\"{1}\",\"{2}\")",StudentNumber.ToString() , Time.ToString() , Total.ToString());

String connectionString = "your connection string";

CreateCommand(query,connectionString);
0 голосов
/ 03 мая 2011

StudentNumber.ToString() не может содержаться в запросе! Это код Java, а не sql ...

0 голосов
/ 03 мая 2011

Вы хотите что-то вроде этого:

sqlCmd.CommandText = "INSERT INTO 
  dbo.PortfolioValues(StudentNumber,TimeStamp,PortfolioValue) VALUES ('" +    
  StudentNumber.ToString() + "'," + Time.ToString() + "," + Total.ToString() + ")";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...