MySQL INSERT 매개변수가 있는 C#
안녕하세요, Visual C# 2010과 MySQL Version 5.1.48-community를 사용하고 있습니다.당신이 이 코드를 도와주길 바랍니다.난 그게 잘 안 돼요.제가 무엇을 빠뜨리고 있나요?
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(@person, @address)";
comm.Parameters.Add("@person", "Myname");
comm.Parameters.Add("@address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();
제가 정리를 하려고 할 때.다음과 같이 적혀있습니다.
사용자 열은 null일 수 없습니다.
편집됨:
하지만 이 코드를 사용해 보면요.
comm.CommandText = "INSERT INTO room(person,address) VALUES('Myname', 'Myaddress')";
하지만 이 코드는 sql injection 공격을 받기 쉽지만 작동합니다. 오류가 발생하지 않습니다.
편집됨:
이걸 쓰려고 했는데요.여기서 찾아서 잘 될 줄 알았는데 오류가 나네요.
인덱스(0 기준)는 0보다 크거나 같아야 하며 인수 목록의 크기보다 작아야 합니다.
감 잡히는 게 없어요?
string a = "myname";
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO room(person,address) VALUES(?,?)";
//cmd.Prepare();
cmd.Parameters.Add("person", MySqlDbType.VarChar).Value = a;
cmd.Parameters.Add("address", MySqlDbType.VarChar).Value = "myaddress";
cmd.ExecuteNonQuery(); // HERE I GOT AN EXCEPTION IN THIS LINE
어떤 도움이라도 주시면 감사하겠습니다.
편집: 해결했습니다. 이 코드를 사용했습니다.
cmd.CommandText = "INSERT INTO room(person,address) VALUES(?person,?address)";
cmd.Parameters.Add("?person", MySqlDbType.VarChar).Value = "myname";
cmd.Parameters.Add("?address", MySqlDbType.VarChar).Value = "myaddress";
cmd.ExecuteNonQuery();
감사합니다.
사용하셔도 좋습니다AddWithValue
메소드:
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(@person, @address)";
comm.Parameters.AddWithValue("@person", "Myname");
comm.Parameters.AddWithValue("@address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();
오어
사용해보기?
대신에@
, 예:
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(?person, ?address)";
comm.Parameters.Add("?person", "Myname");
comm.Parameters.Add("?address", "Myaddress");
comm.ExecuteNonQuery();
conn.Close();
도움이 되길...
사용.AddWithValue
방법:
comm.Parameters.AddWithValue("@person", "Myname");
comm.Parameters.AddWithValue("@address", "Myaddress");
저는 같은 문제가 있었습니다. 마침내 @ 대신 ?sigil을 사용해 보았는데 효과가 있었습니다.
문서에 따르면:
참고. 이전 버전의 공급자는 SQL에서 매개변수를 표시할 때 '@' 기호를 사용했습니다.이는 MySQL 사용자 변수와 호환되지 않으므로 공급자는 이제 '?' 기호를 사용하여 SQL에서 매개 변수를 찾습니다.이전 코드를 지원하려면 연결 문자열에 'old syntax=yes'를 설정하면 됩니다.이렇게 하면 SQL에서 사용하려는 매개 변수를 정의하지 못할 경우 예외가 발생하지 않습니다.
그래요? 누군가가 구 구문을 사용하려고 한다면 그냥 예외를 두는 게 어때요?20라인 프로그램을 위해 몇 시간 후면...
3가지: 사용하기using
문, 사용AddWithValue
및 접두사 매개변수에 ? 및 add를 지정합니다.Allow User Variables=True
연결 문자열에 연결합니다.
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
using (var conn = new MySqlConnection(connString))
{
conn.Open();
var comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES(@person, @address)";
comm.Parameters.AddWithValue("?person", "Myname");
comm.Parameters.AddWithValue("?address", "Myaddress");
comm.ExecuteNonQuery();
}
또한 명령 사용에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx 을 참조하고, 사용자 변수 허용 옵션(버전 5.2.2 이상에서만 지원됨)에 대한 자세한 내용은 http://dev.mysql.com/doc/refman/5.1/en/connector-net-connection-options.html 을 참조하십시오.
Windows Form Application에서 mysql-connector-net-5.1.7-noinstall 및 Visual Studio(2015)를 사용하여 데이터를 삽입하는 동안 매우 유사한 문제에 직면했습니다.나는 C# 구루가 아닙니다.그래서 모든 것을 해결하는 데 2시간 정도 걸립니다.
최근에 작동하는 코드는 다음과 같습니다.
string connetionString = null;
connetionString = "server=localhost;database=device_db;uid=root;pwd=123;";
using (MySqlConnection cn = new MySqlConnection(connetionString))
{
try
{
string query = "INSERT INTO test_table(user_id, user_name) VALUES (?user_id,?user_name);";
cn.Open();
using (MySqlCommand cmd = new MySqlCommand(query, cn))
{
cmd.Parameters.Add("?user_id", MySqlDbType.Int32).Value = 123;
cmd.Parameters.Add("?user_name", MySqlDbType.VarChar).Value = "Test username";
cmd.ExecuteNonQuery();
}
}
catch (MySqlException ex)
{
MessageBox.Show("Error in adding mysql row. Error: "+ex.Message);
}
}
comm.Parameters.Add("person", "Myname");
제가 한 일은 이렇습니다.
String person;
String address;
person = your value;
address =your value;
string connString = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
MySqlConnection conn = new MySqlConnection(connString);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO room(person,address) VALUES('"+person+"','"+address+"')";
comm.ExecuteNonQuery();
conn.Close();
필요한 경우 DB 유형과 일치하도록 "SqlDbType"에서 코드를 조정하고 다음 코드를 사용합니다.
comm.Parameters.Add("@person",SqlDbType.VarChar).Value=MyName;
또는:
comm.Parameters.AddWithValue("@person", Myname);
그것은 효과가 있겠지만 사령부와 함께 기억해야 합니다.매개 변수.Add(), 특정 SqlDbType 및 Command를 사용하여 정의할 수 있습니다.매개 변수.AddWithValue()는 매개 변수 값을 암시적으로 기반으로 SqlDbType을 가져오려고 하는데, 만약 데이터 형식을 암시적으로 변환할 수 없다면 때때로 깨질 수 있습니다.
도움이 되길 바랍니다.
이것을 시도해 보세요 그것은 효과가 있습니다.
MySqlCommand dbcmd = _conn.CreateCommand();
dbcmd.CommandText = sqlCommandString;
dbcmd.ExecuteNonQuery();
long imageId = dbcmd.LastInsertedId;
언급URL : https://stackoverflow.com/questions/16167924/c-sharp-with-mysql-insert-parameters
'programing' 카테고리의 다른 글
이렇게 $.ajax ( serialize() + extra data)로 데이터를 추가하는 방법 (0) | 2023.10.25 |
---|---|
makefile의 "include"와 "-include"의 차이 (0) | 2023.10.25 |
Button 서로 다른 입력(양식 없음)에서 Enter 키를 누르면 이벤트가 발생합니다. (0) | 2023.10.25 |
router.query params Angular 5로 탐색 (0) | 2023.10.25 |
Chocolatey, OneGet, PsGet, NuGet, ...의 차이점은 무엇입니까? (0) | 2023.10.25 |